├── .github └── workflows │ └── gradle.yml ├── .gitignore ├── LICENSE ├── README.md ├── TheAlchemy ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── alchemist │ │ ├── TheAlchemist.java │ │ ├── api │ │ ├── TheAlchemistAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── event │ │ │ └── AlchemistEvent.java │ │ ├── recipes │ │ │ └── Recipes.java │ │ ├── service │ │ │ └── StandService.java │ │ └── session │ │ │ └── StandSession.java │ │ ├── base │ │ ├── TheAlchemistAPIImpl.java │ │ ├── box │ │ │ └── AlchemyBox.java │ │ ├── commands │ │ │ ├── CreateRecipeCommand.java │ │ │ ├── DeleteRecipeCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── OpenCommand.java │ │ │ ├── OpenRecipesCommand.java │ │ │ ├── ReloadCommand.java │ │ │ └── provider │ │ │ │ └── AlchemistCommandProvider.java │ │ ├── config │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ ├── RecipesFile.java │ │ │ └── impl │ │ │ │ └── AlchemyFiles.java │ │ ├── event │ │ │ └── AlchemistBrewEvent.java │ │ ├── gui │ │ │ ├── AlchemistGUI.java │ │ │ ├── brewing │ │ │ │ ├── AlchemistStandGUI.java │ │ │ │ ├── AlchemistStandGUIConfig.java │ │ │ │ └── AlchemistStandManager.java │ │ │ ├── individual │ │ │ │ ├── IndividualRecipeGUI.java │ │ │ │ └── IndividualRecipeGUIConfig.java │ │ │ ├── recipes │ │ │ │ ├── RecipesGUI.java │ │ │ │ └── RecipesGUIConfig.java │ │ │ └── select │ │ │ │ ├── SelectItemGUI.java │ │ │ │ └── SelectItemGUIConfig.java │ │ ├── recipes │ │ │ └── BrewingRecipe.java │ │ ├── service │ │ │ └── StandServiceImpl.java │ │ ├── session │ │ │ └── StandSessionImpl.java │ │ └── stand │ │ │ ├── StandEffect.java │ │ │ └── StandEffects.java │ │ ├── listener │ │ ├── InventoryListener.java │ │ └── VanillaStandListener.java │ │ └── util │ │ ├── AlchemistFinderUtil.java │ │ └── AlchemistPlaceholderUtils.java │ └── resources │ └── plugin.yml ├── TheAnvil ├── build.gradle ├── libs │ └── core-plugin-8.21.0.jar └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── anvil │ │ ├── TheAnvil.java │ │ ├── api │ │ ├── TheAnvilAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── event │ │ │ └── EnchantingEvent.java │ │ ├── provider │ │ │ └── EnchantmentProvider.java │ │ └── session │ │ │ └── AnvilSession.java │ │ ├── base │ │ ├── TheAnvilAPIImpl.java │ │ ├── box │ │ │ └── AnvilBox.java │ │ ├── commands │ │ │ ├── HelpCommand.java │ │ │ ├── OpenAnvilCommand.java │ │ │ ├── ReloadCommand.java │ │ │ └── provider │ │ │ │ └── AnvilCommandProvider.java │ │ ├── config │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ └── impl │ │ │ │ └── AnvilFiles.java │ │ ├── event │ │ │ └── TheEnchantingEnchantEvent.java │ │ ├── factory │ │ │ └── EnchantingProviderFactory.java │ │ ├── gui │ │ │ ├── AnvilGUI.java │ │ │ └── anvilmain │ │ │ │ ├── AnvilMainGUI.java │ │ │ │ ├── AnvilMainGUIConfig.java │ │ │ │ ├── factory │ │ │ │ ├── ClickRequestStrategyFactory.java │ │ │ │ └── ClickRequestStrategyFactoryImpl.java │ │ │ │ ├── request │ │ │ │ └── ClickRequest.java │ │ │ │ └── strategy │ │ │ │ ├── CancellableClickRequestStrategy.java │ │ │ │ ├── ClickRequestStrategy.java │ │ │ │ ├── gui │ │ │ │ ├── PlayerCloseInventoryRequestStrategy.java │ │ │ │ ├── normal │ │ │ │ │ ├── NormalClickToCombineRequestStrategy.java │ │ │ │ │ ├── NormalPickUpRequestStrategy.java │ │ │ │ │ └── NormalUpgradeAndSacrificeRequestStrategy.java │ │ │ │ └── shift │ │ │ │ │ ├── ShiftClickToCombineRequestStrategy.java │ │ │ │ │ ├── ShiftPickUpRequestStrategy.java │ │ │ │ │ └── ShiftUpgradeAndSacrificeRequestStrategy.java │ │ │ │ └── player │ │ │ │ ├── AllowedItemsClickRequestChecker.java │ │ │ │ ├── normal │ │ │ │ └── NormalPlayerClickRequestStrategy.java │ │ │ │ └── shift │ │ │ │ └── ShiftPlayerClickRequestStrategy.java │ │ ├── provider │ │ │ ├── CommonEnchantmentProvider.java │ │ │ ├── TheEnchantingProvider.java │ │ │ └── VanillaEnchantingProvider.java │ │ ├── requirement │ │ │ └── VanillaEnchantRequirement.java │ │ └── session │ │ │ └── AnvilSessionImpl.java │ │ ├── listener │ │ ├── InventoryListener.java │ │ └── VanillaAnvilListener.java │ │ └── util │ │ ├── AnvilFinderUtil.java │ │ ├── AnvilItemStackUtil.java │ │ ├── AnvilPlaceholderUtils.java │ │ ├── ClickLocation.java │ │ └── ClickSlot.java │ └── resources │ └── plugin.yml ├── TheAuction ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── auction │ │ ├── TheAuction.java │ │ ├── api │ │ ├── TheAuctionAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── category │ │ │ ├── AuctionCategory.java │ │ │ └── CategoryFilter.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── event │ │ │ └── BankEvent.java │ │ ├── filter │ │ │ ├── AuctionFilter.java │ │ │ ├── algorithm │ │ │ │ └── FilterAlgorithm.java │ │ │ ├── method │ │ │ │ └── FilterMethod.java │ │ │ └── type │ │ │ │ └── FilterType.java │ │ ├── gui │ │ │ └── GUIDisplayItem.java │ │ ├── searcher │ │ │ └── Searcher.java │ │ └── service │ │ │ ├── AuctionService.java │ │ │ └── UserService.java │ │ ├── base │ │ ├── TheAuctionAPIImpl.java │ │ ├── box │ │ │ └── AuctionBox.java │ │ ├── commands │ │ │ ├── HelpCommand.java │ │ │ ├── OpenAuctionCommand.java │ │ │ ├── ReloadCommand.java │ │ │ └── provider │ │ │ │ └── AuctionCommandProvider.java │ │ ├── config │ │ │ ├── Categories.java │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ └── impl │ │ │ │ └── AlchemyFiles.java │ │ ├── event │ │ │ └── BankInteractEvent.java │ │ ├── factory │ │ │ └── DatabaseFactory.java │ │ ├── gui │ │ │ ├── AuctionGUI.java │ │ │ ├── all │ │ │ │ ├── AllAuctionsGUI.java │ │ │ │ └── AllAuctionsGUIConfig.java │ │ │ ├── confirm │ │ │ │ ├── ConfirmAuctionGUI.java │ │ │ │ └── ConfirmAuctionGUIConfig.java │ │ │ ├── create │ │ │ │ ├── CreateAuctionGUI.java │ │ │ │ └── CreateAuctionGUIConfig.java │ │ │ ├── main │ │ │ │ ├── MainAuctionGUI.java │ │ │ │ └── MainAuctionGUIConfig.java │ │ │ ├── manage │ │ │ │ ├── ManageAuctionGUI.java │ │ │ │ └── ManageAuctionGUIConfig.java │ │ │ ├── pending │ │ │ │ ├── PendingAuctionGUI.java │ │ │ │ └── PendingAuctionGUIConfig.java │ │ │ ├── stats │ │ │ │ ├── AuctionStatsGUI.java │ │ │ │ └── AuctionStatsGUIConfig.java │ │ │ ├── time │ │ │ │ ├── AuctionTimeConfigGUI.java │ │ │ │ └── AuctionTimeGUI.java │ │ │ └── view │ │ │ │ ├── ViewOpener.java │ │ │ │ ├── bin │ │ │ │ ├── BinAuctionViewGUI.java │ │ │ │ └── BinAuctionViewGUIConfig.java │ │ │ │ └── normal │ │ │ │ ├── NormalAuctionViewGUI.java │ │ │ │ └── NormalAuctionViewGUIConfig.java │ │ ├── searcher │ │ │ ├── AuctionSearcher.java │ │ │ ├── NewAuctionSearcher.java │ │ │ └── filters │ │ │ │ ├── BinFilter.java │ │ │ │ ├── CategoryFilter.java │ │ │ │ ├── SortFilter.java │ │ │ │ └── StringFilter.java │ │ ├── service │ │ │ ├── AuctionServiceImpl.java │ │ │ └── UserServiceImpl.java │ │ └── tasks │ │ │ └── AuctionExpirationTask.java │ │ ├── listener │ │ ├── InventoryListener.java │ │ └── UserListener.java │ │ ├── persistence │ │ ├── AuctionRepository.java │ │ ├── UserRepository.java │ │ └── data │ │ │ ├── AuctionBid.java │ │ │ ├── AuctionHouse.java │ │ │ ├── AuctionHouseLoader.java │ │ │ ├── AuctionItem.java │ │ │ ├── AuctionStats.java │ │ │ ├── AuctionTime.java │ │ │ └── User.java │ │ └── util │ │ ├── AuctionFilterUtil.java │ │ ├── AuctionItemStackUtils.java │ │ └── AuctionPlaceholderUtil.java │ └── resources │ └── plugin.yml ├── TheBank ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── bank │ │ ├── TheBank.java │ │ ├── api │ │ ├── TheBankAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── event │ │ │ ├── BankEvent.java │ │ │ └── PlayerBankEvent.java │ │ ├── exception │ │ │ └── BankException.java │ │ ├── gui │ │ │ └── GUIDisplayItem.java │ │ ├── handler │ │ │ ├── TransactionGateway.java │ │ │ └── TrxHandler.java │ │ ├── request │ │ │ └── TrxRequest.java │ │ ├── response │ │ │ └── TrxResponse.java │ │ ├── service │ │ │ └── BankService.java │ │ └── transaction │ │ │ └── TransactionType.java │ │ ├── base │ │ ├── TheBankAPIImpl.java │ │ ├── addons │ │ │ └── PlaceholdersRegistry.java │ │ ├── box │ │ │ └── BankBox.java │ │ ├── commands │ │ │ ├── GivePersonalBankCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── OpenBankCommand.java │ │ │ ├── ReloadCommand.java │ │ │ └── provider │ │ │ │ └── BankCommandProvider.java │ │ ├── config │ │ │ ├── BankUpgrades.java │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ └── impl │ │ │ │ └── AlchemyFiles.java │ │ ├── event │ │ │ └── BankInteractEvent.java │ │ ├── exception │ │ │ ├── BankLimitException.java │ │ │ ├── NotEnoughMoneyException.java │ │ │ └── ZeroMoneyException.java │ │ ├── factory │ │ │ ├── DatabaseFactory.java │ │ │ └── TrxHandlerFactory.java │ │ ├── gui │ │ │ ├── BankGUI.java │ │ │ ├── deposit │ │ │ │ ├── BankDepositGUI.java │ │ │ │ └── BankDepositGUIConfig.java │ │ │ ├── main │ │ │ │ ├── BankInterfaceGUI.java │ │ │ │ └── BankInterfaceGUIConfig.java │ │ │ ├── upgrade │ │ │ │ ├── BankUpgradeGUI.java │ │ │ │ └── BankUpgradeGUIConfig.java │ │ │ └── withdraw │ │ │ │ ├── BankWithdrawGUI.java │ │ │ │ └── BankWithdrawGUIConfig.java │ │ ├── handler │ │ │ ├── BankInterestHandler.java │ │ │ ├── DepositHandler.java │ │ │ ├── TransactionGatewayImpl.java │ │ │ └── WithdrawHandler.java │ │ ├── service │ │ │ └── BankServiceImpl.java │ │ └── upgrade │ │ │ ├── BankUpgrade.java │ │ │ └── UpgradeInterest.java │ │ ├── listener │ │ ├── InventoryListener.java │ │ ├── PersonalBankListener.java │ │ └── UserListener.java │ │ ├── persistence │ │ ├── BankRepository.java │ │ └── data │ │ │ ├── BankData.java │ │ │ └── BankTransaction.java │ │ └── util │ │ ├── BankItemStackUtils.java │ │ └── BankMessageUtil.java │ └── resources │ └── plugin.yml ├── TheCollections ├── build.gradle ├── libs │ └── JetsMinions.jar └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── collections │ │ ├── TheCollections.java │ │ ├── api │ │ ├── TheCollectionsAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── event │ │ │ └── CollectionEvent.java │ │ └── service │ │ │ ├── AntiExploitService.java │ │ │ └── CollectionsService.java │ │ ├── base │ │ ├── TheCollectionsAPIImpl.java │ │ ├── addons │ │ │ ├── MinionsRegistry.java │ │ │ └── PlaceholdersRegistry.java │ │ ├── box │ │ │ └── BoxImpl.java │ │ ├── collection │ │ │ ├── Collection.java │ │ │ ├── category │ │ │ │ ├── Categories.java │ │ │ │ └── CollectionCategory.java │ │ │ ├── executor │ │ │ │ ├── CollectionExecutor.java │ │ │ │ └── ExecutorType.java │ │ │ ├── gui │ │ │ │ └── GUIOptions.java │ │ │ ├── registry │ │ │ │ └── CollectionsRegistry.java │ │ │ └── rewards │ │ │ │ └── CollectionsCommandRewards.java │ │ ├── commands │ │ │ ├── DropItemCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── OpenCollectionCategoryCommand.java │ │ │ ├── OpenCollectionCommand.java │ │ │ ├── OpenCollectionItemCommand.java │ │ │ ├── ReloadCommand.java │ │ │ ├── SetItemToCollectionCommand.java │ │ │ ├── SetLevelCommand.java │ │ │ ├── SetXPCommand.java │ │ │ └── provider │ │ │ │ └── CollectionsCommandProvider.java │ │ ├── config │ │ │ ├── CategoriesFile.java │ │ │ ├── CollectionsFile.java │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ └── impl │ │ │ │ └── BasicFiles.java │ │ ├── event │ │ │ ├── CollectionsLevelUPEvent.java │ │ │ ├── CollectionsUnlockEvent.java │ │ │ └── CollectionsXPGainEvent.java │ │ ├── factory │ │ │ └── DatabaseFactory.java │ │ └── service │ │ │ ├── AntiExploitServiceImpl.java │ │ │ └── CollectionsServiceImpl.java │ │ ├── gui │ │ ├── CollectionsGUI.java │ │ ├── category │ │ │ ├── CategoryGUI.java │ │ │ └── CategoryGUIConfig.java │ │ ├── collection │ │ │ ├── CollectionGUI.java │ │ │ └── CollectionGUIConfig.java │ │ └── main │ │ │ ├── MainGUI.java │ │ │ └── MainGUIConfig.java │ │ ├── listener │ │ ├── CollectionsInternalListener.java │ │ ├── CollectionsMainListener.java │ │ ├── InventoryListener.java │ │ ├── UserListener.java │ │ └── minions │ │ │ └── TheMinionsListener.java │ │ ├── persistance │ │ ├── CollectionsRepository.java │ │ └── data │ │ │ ├── UserData.java │ │ │ └── user │ │ │ └── UserCollections.java │ │ └── util │ │ ├── CollectionsItemStackUtil.java │ │ └── CollectionsPlaceholderUtil.java │ └── resources │ └── plugin.yml ├── TheCrafting ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── crafting │ │ ├── TheCrafting.java │ │ ├── api │ │ ├── TheCraftingAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── edition │ │ │ ├── EditionObject.java │ │ │ └── RecipeEdition.java │ │ ├── event │ │ │ └── AlchemistEvent.java │ │ └── recipes │ │ │ ├── IRecipe.java │ │ │ └── Recipes.java │ │ ├── base │ │ ├── TheCraftingAPIImpl.java │ │ ├── box │ │ │ └── CraftingBox.java │ │ ├── category │ │ │ └── Category.java │ │ ├── commands │ │ │ ├── CreateRecipeCommand.java │ │ │ ├── DeleteRecipeCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── OpenBookCommand.java │ │ │ ├── OpenRecipePreviewCommand.java │ │ │ ├── OpenRecipesCommand.java │ │ │ ├── OpenTableCommand.java │ │ │ ├── ReloadCommand.java │ │ │ └── provider │ │ │ │ └── CraftingCommandProvider.java │ │ ├── config │ │ │ ├── BlockedCraftings.java │ │ │ ├── Categories.java │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ ├── RecipesFile.java │ │ │ └── impl │ │ │ │ └── AlchemyFiles.java │ │ ├── edition │ │ │ └── RecipeEditionImpl.java │ │ ├── event │ │ │ └── TheCraftingCraftEvent.java │ │ ├── gui │ │ │ ├── CraftingGUI.java │ │ │ ├── book │ │ │ │ ├── main │ │ │ │ │ ├── RecipeBookMainGUI.java │ │ │ │ │ └── RecipeBookMainGUIConfig.java │ │ │ │ └── sub │ │ │ │ │ ├── RecipeBookSubGUI.java │ │ │ │ │ └── RecipeBookSubGUIConfig.java │ │ │ ├── craftingtable │ │ │ │ ├── CraftingTableGUI.java │ │ │ │ ├── CraftingTableGUIConfig.java │ │ │ │ └── handler │ │ │ │ │ ├── CommonHandler.java │ │ │ │ │ └── result │ │ │ │ │ ├── NormalResultHandler.java │ │ │ │ │ ├── ShiftResultHandler.java │ │ │ │ │ └── TableClickHandler.java │ │ │ ├── individual │ │ │ │ ├── RecipeIndividualGUI.java │ │ │ │ └── RecipeIndividualGUIConfig.java │ │ │ ├── modify │ │ │ │ ├── ModifyRecipeGUI.java │ │ │ │ └── ModifyRecipeGUIConfig.java │ │ │ ├── preview │ │ │ │ ├── RecipePreviewGUI.java │ │ │ │ └── RecipePreviewGUIConfig.java │ │ │ └── recipes │ │ │ │ ├── RecipesGUI.java │ │ │ │ └── RecipesGUIConfig.java │ │ └── recipes │ │ │ ├── CustomRecipe.java │ │ │ └── VanillaRecipe.java │ │ ├── listener │ │ ├── InventoryListener.java │ │ └── VanillaTableListener.java │ │ └── util │ │ ├── CraftingFinderUtil.java │ │ ├── CraftingItemStackUtil.java │ │ └── CraftingPlaceholderUtils.java │ └── resources │ └── plugin.yml ├── TheDragon ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── dragon │ │ ├── TheDragon.java │ │ ├── api │ │ ├── TheDragonAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── controller │ │ │ └── DragonController.java │ │ ├── event │ │ │ ├── DragonGameEvent.java │ │ │ └── SwitchableEvents.java │ │ ├── exception │ │ │ ├── InvalidSpawnException.java │ │ │ └── check │ │ │ │ ├── NoSpawnException.java │ │ │ │ └── NoStructureException.java │ │ ├── factory │ │ │ ├── DragonFactory.java │ │ │ └── GuardianFactory.java │ │ ├── game │ │ │ ├── DragonGame.java │ │ │ ├── dragon │ │ │ │ └── TheDragonEntity.java │ │ │ ├── entity │ │ │ │ └── LivingGameEntity.java │ │ │ ├── guardian │ │ │ │ └── Guardian.java │ │ │ ├── part │ │ │ │ ├── GameCountdown.java │ │ │ │ ├── GameEnd.java │ │ │ │ ├── GameEventSwitch.java │ │ │ │ └── GameExplosion.java │ │ │ ├── player │ │ │ │ └── GamePlayer.java │ │ │ ├── ranking │ │ │ │ └── GameRanking.java │ │ │ ├── reward │ │ │ │ └── DragonReward.java │ │ │ ├── settings │ │ │ │ └── Settings.java │ │ │ └── structure │ │ │ │ ├── AbstractStructure.java │ │ │ │ ├── GameStructure.java │ │ │ │ ├── GameStructures.java │ │ │ │ ├── StructureInfo.java │ │ │ │ └── type │ │ │ │ ├── DragonAltar.java │ │ │ │ ├── DragonCrystal.java │ │ │ │ └── DragonSpawn.java │ │ ├── handler │ │ │ ├── ParticleHandler.java │ │ │ ├── ProjectileHandler.java │ │ │ └── ReplyHandler.java │ │ └── service │ │ │ ├── AltarSetupService.java │ │ │ ├── BossBarService.java │ │ │ ├── DragonService.java │ │ │ ├── GamePlayerCheckService.java │ │ │ ├── GameService.java │ │ │ ├── GuardianEditService.java │ │ │ ├── GuardianService.java │ │ │ ├── GuardianSpawnFactory.java │ │ │ ├── SchematicService.java │ │ │ ├── StructureService.java │ │ │ ├── UserDBService.java │ │ │ └── UserService.java │ │ ├── base │ │ ├── TheDragonAPIImpl.java │ │ ├── box │ │ │ └── BoxImpl.java │ │ ├── commands │ │ │ ├── AddCrystalCommand.java │ │ │ ├── AddGuardianCommand.java │ │ │ ├── AddGuardianSpawnCommand.java │ │ │ ├── GetRemoverToolCommand.java │ │ │ ├── GiveEnderKeyCommand.java │ │ │ ├── GuardianGUICommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── MainGUICommand.java │ │ │ ├── ReloadCommand.java │ │ │ ├── SetDragonSpawnCommand.java │ │ │ ├── SetupModeCommand.java │ │ │ ├── StartGameCommand.java │ │ │ ├── StopCommand.java │ │ │ ├── TestCommand.java │ │ │ └── provider │ │ │ │ └── CommandProvider.java │ │ ├── configs │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── DragonEventsFile.java │ │ │ ├── DragonGuardiansFile.java │ │ │ ├── DragonRewardsFile.java │ │ │ ├── DragonsFile.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ ├── StructuresFile.java │ │ │ └── implementations │ │ │ │ └── DragonFiles.java │ │ ├── controller │ │ │ ├── DragonControllerImpl.java │ │ │ └── DragonRefreshControllerTask.java │ │ ├── editmode │ │ │ └── GuardianEditMode.java │ │ ├── event │ │ │ ├── DragonRefreshEvent.java │ │ │ └── DragonTargetEvent.java │ │ ├── events │ │ │ ├── DragonFireBallEvent.java │ │ │ ├── DragonFlyEvent.java │ │ │ ├── DragonGuardianEvent.java │ │ │ ├── DragonLightningEvent.java │ │ │ ├── DragonNormalFireBallEvent.java │ │ │ └── SwitchableEventImpl.java │ │ ├── factory │ │ │ ├── DatabaseFactory.java │ │ │ └── DragonFactoryImpl.java │ │ ├── game │ │ │ ├── DragonGameImpl.java │ │ │ ├── dragon │ │ │ │ ├── TheDragonEntityImpl.java │ │ │ │ └── TheMythicDragonEntity.java │ │ │ ├── guardian │ │ │ │ ├── DragonGuardian.java │ │ │ │ ├── GuardianArmor.java │ │ │ │ ├── GuardianFactoryImpl.java │ │ │ │ └── MythicGuardian.java │ │ │ ├── parts │ │ │ │ ├── GameCountdownImpl.java │ │ │ │ ├── GameEndImpl.java │ │ │ │ ├── GameEventSwitchImpl.java │ │ │ │ └── GameExplosionImpl.java │ │ │ ├── player │ │ │ │ ├── EventPlayer.java │ │ │ │ └── PlayerStatus.java │ │ │ ├── ranking │ │ │ │ └── GameRankingImpl.java │ │ │ ├── reward │ │ │ │ └── DragonRewardImpl.java │ │ │ └── structure │ │ │ │ ├── DragonAltarImpl.java │ │ │ │ ├── DragonCrystalImpl.java │ │ │ │ ├── DragonSpawnImpl.java │ │ │ │ └── GameStructuresImpl.java │ │ ├── handler │ │ │ ├── BossBarHandler.java │ │ │ ├── ParticleHandlerImpl.java │ │ │ └── ProjectileHandlerImpl.java │ │ └── service │ │ │ ├── AltarSetupServiceImpl.java │ │ │ ├── BossBarServiceImpl.java │ │ │ ├── DragonServiceImpl.java │ │ │ ├── GamePlayerCheckServiceImpl.java │ │ │ ├── GameServiceImpl.java │ │ │ ├── GuardianEditServiceImpl.java │ │ │ ├── GuardianServiceImpl.java │ │ │ ├── GuardianSpawnFactoryImpl.java │ │ │ ├── SchematicServiceImpl.java │ │ │ ├── StructureServiceImpl.java │ │ │ ├── UserDBServiceImpl.java │ │ │ └── UserServiceImpl.java │ │ ├── gui │ │ ├── TheDragonGUI.java │ │ ├── altars │ │ │ ├── DragonAltarsGUI.java │ │ │ └── DragonAltarsGUIConfig.java │ │ ├── confirm │ │ │ ├── ConfirmGUI.java │ │ │ └── ConfirmGUIConfig.java │ │ ├── crystals │ │ │ ├── DragonCrystalsGUI.java │ │ │ └── DragonCrystalsGUIConfig.java │ │ ├── dragons │ │ │ ├── DragonsGUI.java │ │ │ └── DragonsGUIConfig.java │ │ ├── equipment │ │ │ ├── GuardianEquipmentGUI.java │ │ │ └── GuardianEquipmentGUIConfig.java │ │ ├── guardian │ │ │ ├── GuardianGUI.java │ │ │ └── GuardianGUIConfig.java │ │ ├── guardians │ │ │ ├── DragonGuardiansGUI.java │ │ │ └── DragonGuardiansGUIConfig.java │ │ ├── guardianspawns │ │ │ ├── GuardianSpawnsGUI.java │ │ │ └── GuardianSpawnsGUIConfig.java │ │ └── mainmenu │ │ │ ├── MainMenuGUI.java │ │ │ └── MainMenuGUIConfig.java │ │ ├── listener │ │ ├── AltarEditListener.java │ │ ├── DragonControlListener.java │ │ ├── DragonDamageListener.java │ │ ├── GuardianEditListener.java │ │ ├── InventoryClickListener.java │ │ ├── UserListener.java │ │ ├── altars │ │ │ └── AltarListener.java │ │ ├── combat │ │ │ └── DragonCombatListener.java │ │ └── crystals │ │ │ └── CrystalListener.java │ │ ├── persistance │ │ ├── DragonRepository.java │ │ └── data │ │ │ └── UserData.java │ │ └── util │ │ ├── DragonHealthUtil.java │ │ ├── DragonItemStackUtil.java │ │ └── DragonVelocityUtil.java │ └── resources │ └── plugin.yml ├── TheEnchanting ├── TheEnchanting-NMS │ ├── TheEnchanting-Legacy │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── qualityplus │ │ │ └── enchanting │ │ │ ├── api │ │ │ └── enchantment │ │ │ │ └── legacy │ │ │ │ └── CoreEnchantLegacy.java │ │ │ └── base │ │ │ └── enchantment │ │ │ └── legacy │ │ │ ├── AdvancedEnchantLegacy.java │ │ │ └── VanillaEnchantLegacy.java │ ├── TheEnchanting-Newest-1_20 │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── qualityplus │ │ │ └── enchanting │ │ │ ├── api │ │ │ └── enchantment │ │ │ │ └── newest │ │ │ │ └── CoreEnchantNewest1_20.java │ │ │ └── base │ │ │ └── enchantment │ │ │ └── newest │ │ │ └── VanillaEnchantNewest1_20.java │ ├── TheEnchanting-Newest │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── qualityplus │ │ │ └── enchanting │ │ │ ├── api │ │ │ └── enchantment │ │ │ │ └── newest │ │ │ │ └── CoreEnchantNewest.java │ │ │ └── base │ │ │ └── enchantment │ │ │ └── newest │ │ │ └── VanillaEnchantNewest.java │ ├── build.gradle │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── qualityplus │ │ └── enchanting │ │ └── api │ │ └── enchantment │ │ ├── ICoreEnchantment.java │ │ ├── ProviderType.java │ │ └── VanillaEnchantment.java ├── build.gradle ├── libs │ └── core-plugin-9.0.0-b3-all.jar └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── enchanting │ │ ├── TheEnchanting.java │ │ ├── api │ │ ├── TheEnchantingAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── chain │ │ │ └── EnchantmentChain.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── enchantment │ │ │ └── CoreEnchants.java │ │ ├── event │ │ │ └── EnchantingEvent.java │ │ ├── handler │ │ │ └── EnchantmentController.java │ │ ├── processor │ │ │ └── EnchantmentProcessor.java │ │ ├── provider │ │ │ └── EnchantmentProvider.java │ │ ├── session │ │ │ └── EnchantmentSession.java │ │ └── settings │ │ │ └── EcoWarning.java │ │ ├── base │ │ ├── TheEnchantingAPIImpl.java │ │ ├── box │ │ │ └── EnchantingBox.java │ │ ├── chain │ │ │ └── EnchantmentChainImpl.java │ │ ├── commands │ │ │ ├── HelpCommand.java │ │ │ ├── OpenEnchantCommand.java │ │ │ ├── ReloadCommand.java │ │ │ ├── TestCommand.java │ │ │ └── provider │ │ │ │ └── EnchantingCommandProvider.java │ │ ├── config │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ ├── enchantments │ │ │ │ ├── EnchantConfig.java │ │ │ │ ├── advanced │ │ │ │ │ └── AdvancedEnchantments.java │ │ │ │ ├── eco │ │ │ │ │ └── EcoEnchantments.java │ │ │ │ └── vanilla │ │ │ │ │ └── VanillaEnchantments.java │ │ │ └── impl │ │ │ │ └── EnchantingFiles.java │ │ ├── controller │ │ │ ├── BridgeEnchantmentController.java │ │ │ └── extensions │ │ │ │ ├── AdvancedExtensionController.java │ │ │ │ └── VanillaExtensionController.java │ │ ├── event │ │ │ └── TheEnchantingEnchantEvent.java │ │ ├── factory │ │ │ ├── AEEnchantmentFactory.java │ │ │ ├── VanillaEnchantmentFactory.java │ │ │ ├── controller │ │ │ │ └── ControllerFactory.java │ │ │ └── hook │ │ │ │ ├── AEProviderFactory.java │ │ │ │ └── EcoProviderFactory.java │ │ ├── gui │ │ │ ├── EnchantingGUI.java │ │ │ ├── enchantmain │ │ │ │ ├── EnchantMainGUI.java │ │ │ │ ├── EnchantMainGUIConfig.java │ │ │ │ └── handler │ │ │ │ │ ├── ClickHandler.java │ │ │ │ │ ├── MainClickHandler.java │ │ │ │ │ ├── NormalClickHandler.java │ │ │ │ │ └── ShiftClickHandler.java │ │ │ └── enchantsub │ │ │ │ ├── EnchantSubGUI.java │ │ │ │ └── EnchantSubGUIConfig.java │ │ ├── hook │ │ │ └── EcoHookSettings.java │ │ ├── processor │ │ │ └── EnchantmentProcessorImpl.java │ │ ├── provider │ │ │ ├── AEProvider.java │ │ │ ├── EcoEnchantmentProvider.java │ │ │ ├── VanillaEnchantmentProvider.java │ │ │ └── registry │ │ │ │ ├── AEProviderRegistry.java │ │ │ │ └── EcoProviderRegistry.java │ │ └── session │ │ │ └── EnchantmentSessionImpl.java │ │ ├── listener │ │ ├── InventoryListener.java │ │ └── VanillaTableListener.java │ │ └── util │ │ ├── EnchantingAddonsUtil.java │ │ ├── EnchantingFinderUtil.java │ │ └── EnchantingPlaceholderUtil.java │ └── resources │ └── plugin.yml ├── TheMinions ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── minions │ │ ├── TheMinions.java │ │ ├── api │ │ ├── TheMinionsAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── handler │ │ │ ├── AnimationHandler.java │ │ │ ├── ArmorStandHandler.java │ │ │ ├── FuelHandler.java │ │ │ ├── LayoutHandler.java │ │ │ ├── SellHandler.java │ │ │ └── StorageHandler.java │ │ ├── minion │ │ │ ├── MinionEntity.java │ │ │ └── category │ │ │ │ └── MinionCategory.java │ │ ├── recipe │ │ │ ├── Recipe.java │ │ │ └── provider │ │ │ │ └── RecipeProvider.java │ │ └── service │ │ │ ├── MinionsService.java │ │ │ └── UserService.java │ │ ├── base │ │ ├── TheMinionsAPIImpl.java │ │ ├── box │ │ │ └── BoxImpl.java │ │ ├── commands │ │ │ ├── HelpCommand.java │ │ │ ├── ReloadCommand.java │ │ │ ├── TestCommand.java │ │ │ ├── giveitems │ │ │ │ ├── GiveAutoShipCommand.java │ │ │ │ ├── GiveFuelCommand.java │ │ │ │ ├── GiveMinionCommand.java │ │ │ │ ├── GiveSkinCommand.java │ │ │ │ └── GiveUpgradeCommand.java │ │ │ ├── provider │ │ │ │ └── MinionsCommandProvider.java │ │ │ └── setitems │ │ │ │ ├── SetDropItemCommand.java │ │ │ │ ├── SetUpgradeItemToGiveCommand.java │ │ │ │ └── SetUpgradeRequiredItemCommand.java │ │ ├── config │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ ├── Skins.java │ │ │ ├── impl │ │ │ │ └── MinionFiles.java │ │ │ ├── minions │ │ │ │ ├── CowMinion.java │ │ │ │ ├── DiamondMinion.java │ │ │ │ ├── MinionConfig.java │ │ │ │ ├── SnowMinion.java │ │ │ │ ├── TestMinion.java │ │ │ │ └── WheatMinion.java │ │ │ └── upgrades │ │ │ │ ├── AutomatedShippingUpgrades.java │ │ │ │ ├── FuelUpgrades.java │ │ │ │ └── NormalUpgrades.java │ │ ├── event │ │ │ ├── MinionBlockBreakEvent.java │ │ │ ├── MinionCreateEvent.java │ │ │ ├── MinionInteractEvent.java │ │ │ └── PlayerPickUpMinionItemsEvent.java │ │ ├── factory │ │ │ ├── DatabaseFactory.java │ │ │ └── RecipeProviderFactory.java │ │ ├── gui │ │ │ ├── MinionGUI.java │ │ │ ├── changeitem │ │ │ │ ├── ChangeItem.java │ │ │ │ ├── ChangeItemGUI.java │ │ │ │ ├── ChangeItemGUIConfig.java │ │ │ │ └── ChangeItemRequest.java │ │ │ ├── layout │ │ │ │ ├── LayoutGUI.java │ │ │ │ └── LayoutGUIConfig.java │ │ │ ├── main │ │ │ │ ├── MainMinionGUI.java │ │ │ │ ├── MainMinionGUIConfig.java │ │ │ │ ├── handler │ │ │ │ │ ├── ClickHandler.java │ │ │ │ │ ├── ClickHandlers.java │ │ │ │ │ └── click │ │ │ │ │ │ ├── AutoShipClickHandler.java │ │ │ │ │ │ ├── FuelClickHandler.java │ │ │ │ │ │ ├── MinionSkinClickHandler.java │ │ │ │ │ │ ├── PickUpItemsClickHandler.java │ │ │ │ │ │ ├── PickUpMinionClickHandler.java │ │ │ │ │ │ ├── QuickUpgradeClickHandler.java │ │ │ │ │ │ ├── UpgradeClickHandler.java │ │ │ │ │ │ └── UpgradeSlot.java │ │ │ │ └── setup │ │ │ │ │ ├── ItemSetup.java │ │ │ │ │ ├── PlaceholdersSetup.java │ │ │ │ │ ├── items │ │ │ │ │ ├── AllItemsSetup.java │ │ │ │ │ ├── AutoSellItemSetup.java │ │ │ │ │ ├── FirstUpgradeItemSetup.java │ │ │ │ │ ├── FuelItemSetup.java │ │ │ │ │ ├── MinionEggSetup.java │ │ │ │ │ ├── SecondUpgradeItemSetup.java │ │ │ │ │ └── SkinItemSetup.java │ │ │ │ │ └── placeholders │ │ │ │ │ └── UpgradePlaceholdersSetup.java │ │ │ ├── preview │ │ │ │ ├── MinionRecipePreviewGUI.java │ │ │ │ └── MinionRecipePreviewGUIConfig.java │ │ │ └── recipes │ │ │ │ ├── MinionRecipesGUIConfig.java │ │ │ │ └── MinionsRecipesGUI.java │ │ ├── handler │ │ │ ├── AnimationHandlerImpl.java │ │ │ ├── ArmorStandHandlerImpl.java │ │ │ ├── FuelHandlerImpl.java │ │ │ ├── LayoutHandlerImpl.java │ │ │ ├── SellHandlerImpl.java │ │ │ └── StorageHandlerImpl.java │ │ ├── minions │ │ │ ├── Minions.java │ │ │ ├── animations │ │ │ │ ├── BreakAnimation.java │ │ │ │ ├── PlaceAnimation.java │ │ │ │ └── StartAnimation.java │ │ │ ├── entity │ │ │ │ ├── ArmorStandMinion.java │ │ │ │ ├── MinecraftMinion.java │ │ │ │ ├── MinionEntityOptions.java │ │ │ │ ├── MinionStorageState.java │ │ │ │ ├── animation │ │ │ │ │ └── FinishAnimation.java │ │ │ │ ├── factory │ │ │ │ │ └── MinionEntityFactory.java │ │ │ │ ├── getter │ │ │ │ │ ├── DataGetter.java │ │ │ │ │ ├── LayoutGetter.java │ │ │ │ │ ├── LevelGetter.java │ │ │ │ │ ├── MinionItemsGetter.java │ │ │ │ │ └── MinionUUIDGetter.java │ │ │ │ ├── handler │ │ │ │ │ ├── MinionHandlers.java │ │ │ │ │ └── MinionHandlersImpl.java │ │ │ │ ├── message │ │ │ │ │ └── RandomMessage.java │ │ │ │ ├── mob │ │ │ │ │ └── MinionMobEntity.java │ │ │ │ ├── scheduler │ │ │ │ │ ├── MinionTickService.java │ │ │ │ │ ├── MinionTickServiceImpl.java │ │ │ │ │ └── TickScheduler.java │ │ │ │ ├── state │ │ │ │ │ └── MinionState.java │ │ │ │ ├── status │ │ │ │ │ └── MinionStatus.java │ │ │ │ ├── tracker │ │ │ │ │ ├── MinionArmorStandTracker.java │ │ │ │ │ └── MinionEntityTracker.java │ │ │ │ └── type │ │ │ │ │ ├── BlockBreakMinion.java │ │ │ │ │ ├── CropBreakMinion.java │ │ │ │ │ └── MobKillerMinion.java │ │ │ └── minion │ │ │ │ ├── Minion.java │ │ │ │ ├── MinionType.java │ │ │ │ ├── egg │ │ │ │ └── MinionEgg.java │ │ │ │ ├── layout │ │ │ │ ├── LayoutGUISettings.java │ │ │ │ ├── LayoutItem.java │ │ │ │ ├── LayoutType.java │ │ │ │ └── MinionLayout.java │ │ │ │ ├── level │ │ │ │ ├── MatRequirement.java │ │ │ │ └── MinionLevel.java │ │ │ │ ├── mob │ │ │ │ └── MinionMob.java │ │ │ │ ├── recipes │ │ │ │ └── MinionRecipeConfig.java │ │ │ │ ├── skin │ │ │ │ └── MinionSkin.java │ │ │ │ ├── update │ │ │ │ ├── MinionSettings.java │ │ │ │ └── item │ │ │ │ │ ├── ItemSettings.java │ │ │ │ │ └── UpgradeSettings.java │ │ │ │ └── upgrade │ │ │ │ ├── MinionAutoShipping.java │ │ │ │ ├── MinionFuelUpgrade.java │ │ │ │ └── MinionUpgrade.java │ │ ├── recipe │ │ │ ├── MinionRecipe.java │ │ │ └── provider │ │ │ │ ├── EmptyRecipeProviderImpl.java │ │ │ │ └── TheCraftingRecipeProvider.java │ │ └── service │ │ │ ├── MinionsServiceImpl.java │ │ │ └── UserServiceImpl.java │ │ ├── listener │ │ ├── InventoryListener.java │ │ ├── MinionAnimationListener.java │ │ ├── MinionDamageListener.java │ │ ├── MinionEggListener.java │ │ ├── MinionInteractListener.java │ │ ├── chunk │ │ │ ├── ChunkListenerLegacy.java │ │ │ └── ChunkListenerNewest.java │ │ └── persistence │ │ │ ├── MinionCreateListener.java │ │ │ └── UserListener.java │ │ ├── persistance │ │ ├── MinionsRepository.java │ │ ├── UserRepository.java │ │ └── data │ │ │ ├── MinionData.java │ │ │ ├── UserData.java │ │ │ └── upgrade │ │ │ ├── AutomatedShippingEntity.java │ │ │ ├── FuelEntity.java │ │ │ ├── SkinEntity.java │ │ │ └── UpgradeEntity.java │ │ └── util │ │ ├── MinionAnimationUtil.java │ │ ├── MinionEggUtil.java │ │ ├── MinionPlaceholderUtil.java │ │ ├── MinionPlayerUtil.java │ │ ├── MinionUpgradeUtil.java │ │ └── vector │ │ └── VectorSection.java │ └── resources │ └── plugin.yml ├── ThePets ├── build.gradle ├── libs │ └── api-R3.1.8.jar └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── pets │ │ ├── ThePets.java │ │ ├── api │ │ ├── ThePetsAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── category │ │ │ └── Categories.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── pet │ │ │ ├── Pets.java │ │ │ ├── category │ │ │ │ └── PetCategory.java │ │ │ └── entity │ │ │ │ └── PetEntity.java │ │ ├── service │ │ │ ├── PetFollowService.java │ │ │ ├── PetParticleService.java │ │ │ ├── PetService.java │ │ │ └── UserPetService.java │ │ └── skills │ │ │ ├── DependencyHandler.java │ │ │ └── SkillDependency.java │ │ ├── base │ │ ├── ThePetsAPIImpl.java │ │ ├── box │ │ │ └── PetsBox.java │ │ ├── commands │ │ │ ├── GiveEggCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── OpenCommand.java │ │ │ ├── ReloadCommand.java │ │ │ └── provider │ │ │ │ └── PetsCommandProvider.java │ │ ├── config │ │ │ ├── CategoriesFile.java │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ ├── impl │ │ │ │ └── BasicFiles.java │ │ │ └── pet │ │ │ │ ├── PetConfig.java │ │ │ │ └── Tiger.java │ │ ├── event │ │ │ ├── PetCreateEvent.java │ │ │ ├── PetDespawnEvent.java │ │ │ ├── PetLevelUPEvent.java │ │ │ └── PetXPGainEvent.java │ │ ├── factory │ │ │ ├── DatabaseFactory.java │ │ │ └── SkillPluginFactory.java │ │ ├── gui │ │ │ ├── PetsGUI.java │ │ │ ├── main │ │ │ │ ├── PetMainGUI.java │ │ │ │ └── PetsGUIConfig.java │ │ │ └── sub │ │ │ │ ├── PetLevelsGUI.java │ │ │ │ └── PetLevelsGUIConfig.java │ │ ├── pet │ │ │ ├── Pet.java │ │ │ ├── egg │ │ │ │ ├── PetEgg.java │ │ │ │ └── PetModelEngine.java │ │ │ ├── entity │ │ │ │ ├── ArmorStandPet.java │ │ │ │ ├── MinecraftPet.java │ │ │ │ ├── ModelEnginePet.java │ │ │ │ ├── PetEntityOptions.java │ │ │ │ └── tracket │ │ │ │ │ └── PetArmorStandTracker.java │ │ │ ├── factory │ │ │ │ └── PetEntityFactory.java │ │ │ ├── gui │ │ │ │ └── PetGUIOptions.java │ │ │ ├── level │ │ │ │ └── PetLevel.java │ │ │ ├── potion │ │ │ │ └── PetPotion.java │ │ │ ├── tracker │ │ │ │ └── PetEntityTracker.java │ │ │ └── type │ │ │ │ └── PetType.java │ │ ├── rewards │ │ │ ├── PotionReward.java │ │ │ ├── PotionRewards.java │ │ │ ├── StatReward.java │ │ │ └── StatRewards.java │ │ ├── service │ │ │ ├── PetFollowServiceImpl.java │ │ │ ├── PetParticleServiceImpl.java │ │ │ ├── PetServiceImpl.java │ │ │ └── UserPetServiceImpl.java │ │ └── skills │ │ │ ├── AureliumSkillsPlugin.java │ │ │ ├── DependencyHandlerImpl.java │ │ │ ├── EmptySkillsPlugin.java │ │ │ └── TheSkillsPlugin.java │ │ ├── listener │ │ ├── BlockBreakListener.java │ │ ├── InventoryListener.java │ │ ├── PetChunkListener.java │ │ ├── PetEggListener.java │ │ ├── PetsInternalListener.java │ │ ├── manager │ │ │ └── PetListenerManager.java │ │ ├── persistence │ │ │ ├── PetCreateListener.java │ │ │ └── UserListener.java │ │ └── skills │ │ │ └── SkillsListener.java │ │ ├── persistance │ │ ├── PetRepository.java │ │ ├── UserPetRepository.java │ │ └── data │ │ │ ├── PetData.java │ │ │ ├── UserData.java │ │ │ └── inside │ │ │ ├── InventoryData.java │ │ │ ├── InventoryPet.java │ │ │ ├── SpawnedData.java │ │ │ └── UserSettings.java │ │ └── util │ │ ├── PetEggUtil.java │ │ └── PetPlaceholderUtil.java │ └── resources │ └── plugin.yml ├── TheRunes ├── TheRunes-NMS │ ├── TheRunes-Legacy │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── qualityplus │ │ │ └── runes │ │ │ └── api │ │ │ └── enchantment │ │ │ └── legacy │ │ │ └── RuneEnchantLegacy.java │ ├── TheRunes-Newest │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── qualityplus │ │ │ └── runes │ │ │ └── api │ │ │ └── enchantment │ │ │ └── newest │ │ │ └── RuneEnchantNewest.java │ └── build.gradle ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── runes │ │ ├── TheRunes.java │ │ ├── api │ │ ├── TheRunesAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── config │ │ │ ├── ConfigFiles.java │ │ │ └── RuneTableConfig.java │ │ ├── event │ │ │ └── PlayerRuneEvent.java │ │ ├── provider │ │ │ ├── EffectProvider.java │ │ │ └── LevelProvider.java │ │ ├── recipes │ │ │ └── Runes.java │ │ ├── service │ │ │ ├── RuneTableService.java │ │ │ └── RunesService.java │ │ └── session │ │ │ ├── RemoveSession.java │ │ │ ├── RuneInstance.java │ │ │ └── RuneSession.java │ │ ├── base │ │ ├── TheRunesAPIImpl.java │ │ ├── box │ │ │ └── TradesBox.java │ │ ├── commands │ │ │ ├── GiveRemoverToolCommand.java │ │ │ ├── GiveRuneCommand.java │ │ │ ├── GiveRuneTableCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── OpenRuneTableCommand.java │ │ │ ├── OpenRunesCommand.java │ │ │ ├── ReloadCommand.java │ │ │ ├── RemovalCommand.java │ │ │ └── provider │ │ │ │ └── RunesCommandProvider.java │ │ ├── config │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ ├── RunesFile.java │ │ │ └── impl │ │ │ │ └── RunesFiles.java │ │ ├── event │ │ │ ├── FakeEntitySpawnEvent.java │ │ │ └── RuneTableUseEvent.java │ │ ├── factory │ │ │ └── LevelProviderFactory.java │ │ ├── gui │ │ │ ├── ClickHandler.java │ │ │ ├── RuneGUI.java │ │ │ ├── derune │ │ │ │ ├── RemoveRuneGUI.java │ │ │ │ ├── RemoveRuneGUIConfig.java │ │ │ │ └── handler │ │ │ │ │ ├── RMainClickHandler.java │ │ │ │ │ ├── RNormalClickHandler.java │ │ │ │ │ └── RShiftClickHandler.java │ │ │ ├── options │ │ │ │ ├── AllRunesGUI.java │ │ │ │ └── AllRunesGUIConfig.java │ │ │ └── runetable │ │ │ │ ├── RuneTableGUI.java │ │ │ │ ├── RuneTableGUIConfig.java │ │ │ │ ├── effect │ │ │ │ ├── EffectHandler.java │ │ │ │ └── RuneTableEffectHandler.java │ │ │ │ └── handler │ │ │ │ ├── MainClickHandler.java │ │ │ │ ├── NormalClickHandler.java │ │ │ │ └── ShiftClickHandler.java │ │ ├── provider │ │ │ ├── EffectProviderImpl.java │ │ │ ├── RuneCraftLevelProvider.java │ │ │ └── XPLevelProvider.java │ │ ├── rune │ │ │ ├── EffectBridge.java │ │ │ ├── Rune.java │ │ │ ├── RuneApply.java │ │ │ ├── RuneEffect.java │ │ │ ├── RuneLevel.java │ │ │ └── effects │ │ │ │ ├── EffectBridgeImpl.java │ │ │ │ └── apply │ │ │ │ ├── BootEffect.java │ │ │ │ ├── BowEffect.java │ │ │ │ ├── ChainEffect.java │ │ │ │ └── SwordEffect.java │ │ ├── service │ │ │ ├── RuneTableServiceImpl.java │ │ │ └── RunesServiceImpl.java │ │ ├── session │ │ │ ├── ItemRuneInstanceImpl.java │ │ │ ├── RemoveSessionImpl.java │ │ │ ├── RuneInstanceImpl.java │ │ │ └── RuneSessionImpl.java │ │ └── table │ │ │ ├── RuneTable.java │ │ │ └── effects │ │ │ ├── RuneTableEffect.java │ │ │ └── RuneTableEffects.java │ │ ├── listener │ │ ├── BootsUseListener.java │ │ ├── InventoryListener.java │ │ ├── RuneTableClickAndRemoveListener.java │ │ ├── RuneTablePlaceListener.java │ │ └── WeaponUseListener.java │ │ └── util │ │ ├── GlowFinderUtil.java │ │ ├── RuneFinderUtil.java │ │ ├── RunesPlaceholderUtils.java │ │ └── RunesUtils.java │ └── resources │ └── plugin.yml ├── TheSkills ├── build.gradle ├── libs │ └── JetsMinions.jar └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── skills │ │ ├── TheSkills.java │ │ ├── api │ │ ├── TheSkillsAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── config │ │ │ ├── AllGetter.java │ │ │ ├── ConfigFiles.java │ │ │ ├── PerkFiles.java │ │ │ ├── SkillFiles.java │ │ │ └── StatFiles.java │ │ ├── effect │ │ │ └── CommonObject.java │ │ ├── event │ │ │ ├── PerkEvent.java │ │ │ ├── SkillEvent.java │ │ │ └── StatEvent.java │ │ ├── listener │ │ │ └── ExtraListener.java │ │ ├── provider │ │ │ └── MinionsProvider.java │ │ ├── registry │ │ │ └── ListenerRegistrable.java │ │ └── service │ │ │ ├── ActionBarService.java │ │ │ └── SkillsService.java │ │ ├── base │ │ ├── TheSkillsAPIImpl.java │ │ ├── addons │ │ │ ├── MinionsRegistry.java │ │ │ └── PlaceholdersRegistry.java │ │ ├── box │ │ │ └── BoxImpl.java │ │ ├── commands │ │ │ ├── AddCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── OpenPerksCommand.java │ │ │ ├── OpenSkillsCommand.java │ │ │ ├── OpenStatsCommand.java │ │ │ ├── ReloadCommand.java │ │ │ ├── RemoveCommand.java │ │ │ ├── ResetCommand.java │ │ │ ├── SetCommand.java │ │ │ ├── SkillMenuCommand.java │ │ │ └── provider │ │ │ │ └── SkillsCommandProvider.java │ │ ├── config │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ ├── common │ │ │ │ └── BaseFile.java │ │ │ ├── impl │ │ │ │ ├── BasicFiles.java │ │ │ │ ├── PerkFilesImpl.java │ │ │ │ ├── SkillsFilesImpl.java │ │ │ │ └── StatFilesImpl.java │ │ │ ├── perk │ │ │ │ ├── AbilityDamageConfig.java │ │ │ │ ├── BonusAttackSpeedConfig.java │ │ │ │ ├── BrewerChanceConfig.java │ │ │ │ ├── CactusSkinConfig.java │ │ │ │ ├── EagleEyesConfig.java │ │ │ │ ├── FarmingFortuneConfig.java │ │ │ │ ├── ForagingFortuneConfig.java │ │ │ │ ├── IronLungsConfig.java │ │ │ │ ├── LeavesMasterConfig.java │ │ │ │ ├── LightningPunchConfig.java │ │ │ │ ├── MedicineManConfig.java │ │ │ │ ├── MiningFortuneConfig.java │ │ │ │ ├── MiningSpeedConfig.java │ │ │ │ ├── OnePunchManConfig.java │ │ │ │ ├── OrbMasterConfig.java │ │ │ │ ├── PerkFile.java │ │ │ │ ├── PotionMasterConfig.java │ │ │ │ ├── ProjectileMasterConfig.java │ │ │ │ ├── RefurbishedConfig.java │ │ │ │ ├── SeaFortuneConfig.java │ │ │ │ ├── SpidermanConfig.java │ │ │ │ ├── SteelSkinConfig.java │ │ │ │ └── WizardConfig.java │ │ │ ├── skills │ │ │ │ ├── AlchemyConfig.java │ │ │ │ ├── CarpentryConfig.java │ │ │ │ ├── CombatConfig.java │ │ │ │ ├── DiscovererConfig.java │ │ │ │ ├── DungeoneeringConfig.java │ │ │ │ ├── EnchantingConfig.java │ │ │ │ ├── FarmingConfig.java │ │ │ │ ├── FishingConfig.java │ │ │ │ ├── ForagingConfig.java │ │ │ │ ├── MiningConfig.java │ │ │ │ ├── RunecraftingConfig.java │ │ │ │ └── TamingConfig.java │ │ │ └── stat │ │ │ │ ├── CritChanceConfig.java │ │ │ │ ├── CritDamageConfig.java │ │ │ │ ├── DefenseConfig.java │ │ │ │ ├── FerocityConfig.java │ │ │ │ ├── IntelligenceConfig.java │ │ │ │ ├── MagicFindConfig.java │ │ │ │ ├── PetLuckConfig.java │ │ │ │ ├── SpeedConfig.java │ │ │ │ ├── StatFile.java │ │ │ │ └── StrengthConfig.java │ │ ├── event │ │ │ ├── CritDamageEvent.java │ │ │ ├── EntityFortunePerkEvent.java │ │ │ ├── FerocityDamageEvent.java │ │ │ ├── FortunePerkEvent.java │ │ │ ├── ItemFortunePerkEvent.java │ │ │ ├── MagicFindEvent.java │ │ │ ├── SkillsLevelUPEvent.java │ │ │ └── SkillsXPGainEvent.java │ │ ├── factory │ │ │ └── DatabaseFactory.java │ │ ├── perk │ │ │ ├── Perk.java │ │ │ ├── perks │ │ │ │ ├── AbilityDamagePerk.java │ │ │ │ ├── BonusAttackSpeedPerk.java │ │ │ │ ├── BrewChancePerk.java │ │ │ │ ├── CactusSkinPerk.java │ │ │ │ ├── CoalPolisherMasterPerk.java │ │ │ │ ├── EagleEyesPerk.java │ │ │ │ ├── FarmingFortunePerk.java │ │ │ │ ├── ForagingFortunePerk.java │ │ │ │ ├── IronLungsPerk.java │ │ │ │ ├── LeavesMasterPerk.java │ │ │ │ ├── LightningPunchPerk.java │ │ │ │ ├── MedicineManPerk.java │ │ │ │ ├── MiningFortunePerk.java │ │ │ │ ├── MiningSpeedPerk.java │ │ │ │ ├── OnePunchManPerk.java │ │ │ │ ├── OrbMasterPerk.java │ │ │ │ ├── PotionMasterPerk.java │ │ │ │ ├── ProjectileMasterPerk.java │ │ │ │ ├── RefurbishedPerk.java │ │ │ │ ├── SeaFortunePerk.java │ │ │ │ ├── SpidermanPerk.java │ │ │ │ ├── SteelSkinPerk.java │ │ │ │ ├── WizardPerk.java │ │ │ │ └── common │ │ │ │ │ ├── AbstractFortuneBlockPerk.java │ │ │ │ │ ├── AbstractFortunePerk.java │ │ │ │ │ ├── AbstractPotionPerk.java │ │ │ │ │ └── AbstractRandomBlockDropPerk.java │ │ │ └── registry │ │ │ │ └── Perks.java │ │ ├── provider │ │ │ └── MinionsProviderImpl.java │ │ ├── reward │ │ │ ├── StatReward.java │ │ │ └── StatRewards.java │ │ ├── service │ │ │ ├── ActionBarServiceImpl.java │ │ │ └── SkillsServiceImpl.java │ │ ├── skill │ │ │ ├── Skill.java │ │ │ ├── gui │ │ │ │ └── GUIOptions.java │ │ │ ├── level │ │ │ │ └── SkillLevel.java │ │ │ ├── registry │ │ │ │ └── Skills.java │ │ │ └── skills │ │ │ │ ├── AlchemySkill.java │ │ │ │ ├── CarpentrySkill.java │ │ │ │ ├── CombatSkill.java │ │ │ │ ├── DiscovererSkill.java │ │ │ │ ├── DungeoneeringSkill.java │ │ │ │ ├── EnchantingSkill.java │ │ │ │ ├── FarmingSkill.java │ │ │ │ ├── FishingSkill.java │ │ │ │ ├── ForagingSkill.java │ │ │ │ ├── MiningSkill.java │ │ │ │ ├── RunecraftingSkill.java │ │ │ │ ├── TamingSkill.java │ │ │ │ └── blockbreak │ │ │ │ ├── BlockBreakResponse.java │ │ │ │ └── BlockBreakSkill.java │ │ └── stat │ │ │ ├── Stat.java │ │ │ ├── registry │ │ │ └── Stats.java │ │ │ └── stats │ │ │ ├── CritChanceStat.java │ │ │ ├── CritDamageStat.java │ │ │ ├── DefenseStat.java │ │ │ ├── FerocityStat.java │ │ │ ├── IntelligenceStat.java │ │ │ ├── MagicFindStat.java │ │ │ ├── PetLuckStat.java │ │ │ ├── SpeedStat.java │ │ │ └── StrengthStat.java │ │ ├── gui │ │ ├── SkillsGUI.java │ │ ├── main │ │ │ ├── MainGUI.java │ │ │ └── MainGUIConfig.java │ │ ├── stats │ │ │ ├── StatsAndPerksGUI.java │ │ │ └── StatsAndPerksGUIConfig.java │ │ └── sub │ │ │ ├── SkillGUI.java │ │ │ └── SubGUIConfig.java │ │ ├── listener │ │ ├── ActionBarListener.java │ │ ├── ArmorStatsListener.java │ │ ├── InventoryListener.java │ │ ├── SkillsInternalListener.java │ │ ├── UserListener.java │ │ └── minion │ │ │ └── TheMinionsListener.java │ │ ├── persistance │ │ ├── SkillsRepository.java │ │ └── data │ │ │ ├── UserData.java │ │ │ └── user │ │ │ ├── UserPerks.java │ │ │ ├── UserSkills.java │ │ │ ├── UserStats.java │ │ │ └── armor │ │ │ ├── LevellableArmorData.java │ │ │ └── ProgressableArmorData.java │ │ └── util │ │ ├── SkillsItemStackUtil.java │ │ ├── SkillsPlaceholderUtil.java │ │ └── SkillsPlayerUtil.java │ └── resources │ └── plugin.yml ├── TheSouls ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── souls │ │ ├── TheSouls.java │ │ ├── api │ │ ├── TheSoulsAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── edition │ │ │ ├── EditionObject.java │ │ │ └── SoulEdition.java │ │ └── service │ │ │ └── SoulsService.java │ │ ├── base │ │ ├── TheSoulsAPIImpl.java │ │ ├── addons │ │ │ └── PlaceholdersRegistry.java │ │ ├── box │ │ │ └── BoxImpl.java │ │ ├── commands │ │ │ ├── GiveSoulCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── ReloadCommand.java │ │ │ ├── SoulsCommand.java │ │ │ ├── TiaCommand.java │ │ │ └── provider │ │ │ │ └── SoulsCommandProvider.java │ │ ├── config │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ ├── Souls.java │ │ │ ├── TiaTheFairy.java │ │ │ └── impl │ │ │ │ └── SoulsFiles.java │ │ ├── edition │ │ │ └── SoulEditionImpl.java │ │ ├── factory │ │ │ └── DatabaseFactory.java │ │ ├── gui │ │ │ ├── SoulsGUI.java │ │ │ ├── addcommands │ │ │ │ ├── AddCommandsGUI.java │ │ │ │ └── AddCommandsGUIConfig.java │ │ │ ├── addmessages │ │ │ │ ├── AddMessagesGUI.java │ │ │ │ └── AddMessagesGUIConfig.java │ │ │ ├── allsouls │ │ │ │ ├── AllSoulsGUI.java │ │ │ │ └── AllSoulsGUIConfig.java │ │ │ ├── confirmdelete │ │ │ │ ├── ConfirmDeleteGUI.java │ │ │ │ └── ConfirmDeleteGUIConfig.java │ │ │ ├── editgui │ │ │ │ ├── SoulsEditGUI.java │ │ │ │ └── SoulsEditGUIConfig.java │ │ │ └── tia │ │ │ │ ├── TiaGUI.java │ │ │ │ └── TiaGUIConfig.java │ │ ├── service │ │ │ └── SoulsServiceImpl.java │ │ └── soul │ │ │ ├── Soul.java │ │ │ └── SoulCommand.java │ │ ├── listener │ │ ├── InventoryListener.java │ │ ├── PlayerCollectSoulListener.java │ │ ├── SoulsDeleteListener.java │ │ ├── SoulsPlaceListener.java │ │ └── UserListener.java │ │ └── persistance │ │ ├── SoulsRepository.java │ │ └── data │ │ └── SoulsData.java │ └── resources │ └── plugin.yml ├── TheTrades ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── qualityplus │ │ └── trades │ │ ├── TheTrades.java │ │ ├── api │ │ ├── TheTradesAPI.java │ │ ├── box │ │ │ └── Box.java │ │ ├── config │ │ │ └── ConfigFiles.java │ │ ├── event │ │ │ └── TradeEvent.java │ │ ├── provider │ │ │ └── CheckerProvider.java │ │ ├── recipes │ │ │ └── Trades.java │ │ ├── service │ │ │ └── TradesService.java │ │ └── session │ │ │ └── TradeSession.java │ │ ├── base │ │ ├── TheTradesAPIImpl.java │ │ ├── box │ │ │ └── TradesBox.java │ │ ├── commands │ │ │ ├── HelpCommand.java │ │ │ ├── OpenTradesCommand.java │ │ │ ├── ReloadCommand.java │ │ │ └── provider │ │ │ │ └── TradesCommandProvider.java │ │ ├── config │ │ │ ├── Commands.java │ │ │ ├── Config.java │ │ │ ├── Inventories.java │ │ │ ├── Messages.java │ │ │ ├── TradesFile.java │ │ │ └── impl │ │ │ │ └── TradeFiles.java │ │ ├── event │ │ │ └── PlayerTradeEvent.java │ │ ├── gui │ │ │ ├── TradeGUI.java │ │ │ ├── options │ │ │ │ ├── TradeOptionsGUI.java │ │ │ │ └── TradeOptionsGUIConfig.java │ │ │ └── trades │ │ │ │ ├── TradesGUI.java │ │ │ │ └── TradesGUIConfig.java │ │ ├── provider │ │ │ └── TradesCheckerProvider.java │ │ ├── service │ │ │ └── TradesServiceImpl.java │ │ ├── session │ │ │ └── TradeSessionImpl.java │ │ └── trades │ │ │ └── PluginTrade.java │ │ ├── listener │ │ └── InventoryListener.java │ │ └── util │ │ └── TradePlaceholderUtils.java │ └── resources │ └── plugin.yml ├── build.gradle ├── config └── checkstyle │ ├── checkstyle.xml │ └── suppressions.xml ├── docker-compose.yml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── test-suite ├── docker-compose.yml └── mc-config └── mc.env /.github/workflows/gradle.yml: -------------------------------------------------------------------------------- 1 | name: Java CI with Gradle 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | pull_request: 7 | branches: [ "main" ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v3 19 | - name: Set up JDK 17 20 | uses: actions/setup-java@v3 21 | with: 22 | java-version: '17' 23 | distribution: 'temurin' 24 | - name: Build with Gradle 25 | uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 26 | with: 27 | arguments: build -x shadowJar 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | /.idea 3 | /.gradle 4 | .gitignore 5 | */build 6 | */*/build 7 | */*/*/build 8 | */*/*/*/build 9 | /all-generated 10 | /test-suite/mc-config/* 11 | !/test-suite/mc-config/plugins 12 | /test-suite/mc-config/plugins/* 13 | !/test-suite/mc-config/plugins/TheAssistant.jar 14 | /*/*/*.iml 15 | */*/*/*.iml -------------------------------------------------------------------------------- /TheAlchemy/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'checkstyle' 3 | } 4 | 5 | dependencies { 6 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 7 | } 8 | 9 | checkstyle { 10 | toolVersion = '8.20' 11 | configFile = file('../config/checkstyle/checkstyle.xml') 12 | ignoreFailures = false 13 | showViolations = true 14 | showViolations = true 15 | maxWarnings = 0 16 | sourceSets = [sourceSets.main] 17 | } -------------------------------------------------------------------------------- /TheAlchemy/src/main/java/com/qualityplus/alchemist/api/TheAlchemistAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.alchemist.api; 2 | 3 | /** 4 | * Alchemist API 5 | */ 6 | public interface TheAlchemistAPI { 7 | } 8 | -------------------------------------------------------------------------------- /TheAlchemy/src/main/java/com/qualityplus/alchemist/api/event/AlchemistEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.alchemist.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import org.bukkit.entity.Player; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | /** 8 | * Abstract alchemy event 9 | */ 10 | public abstract class AlchemistEvent extends PlayerAssistantEvent { 11 | /** 12 | * 13 | * @param who {@link Player} 14 | */ 15 | public AlchemistEvent(@NotNull final Player who) { 16 | super(who); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /TheAlchemy/src/main/java/com/qualityplus/alchemist/api/session/StandSession.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.alchemist.api.session; 2 | 3 | import org.bukkit.Location; 4 | 5 | import java.util.UUID; 6 | 7 | /** 8 | * Stand session 9 | */ 10 | public interface StandSession { 11 | /** 12 | * Retrieves session location 13 | * 14 | * @return {@link Location} 15 | */ 16 | public Location getLocation(); 17 | 18 | /** 19 | * Retrieves player's session uuid 20 | * 21 | * @return {@link UUID} 22 | */ 23 | public UUID getPlayer(); 24 | } 25 | -------------------------------------------------------------------------------- /TheAlchemy/src/main/java/com/qualityplus/alchemist/base/TheAlchemistAPIImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.alchemist.base; 2 | 3 | import com.qualityplus.alchemist.api.TheAlchemistAPI; 4 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 5 | 6 | /** 7 | * Implementation fo {@link TheAlchemistAPI} 8 | */ 9 | @Component 10 | public final class TheAlchemistAPIImpl implements TheAlchemistAPI { 11 | } 12 | -------------------------------------------------------------------------------- /TheAlchemy/src/main/java/com/qualityplus/alchemist/base/event/AlchemistBrewEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.alchemist.base.event; 2 | 3 | import com.qualityplus.alchemist.api.event.AlchemistEvent; 4 | import com.qualityplus.alchemist.base.recipes.BrewingRecipe; 5 | import lombok.Getter; 6 | import org.bukkit.entity.Player; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | /** 10 | * Event called when Brewing stand is used 11 | */ 12 | @Getter 13 | public final class AlchemistBrewEvent extends AlchemistEvent { 14 | private final BrewingRecipe recipe; 15 | 16 | /** 17 | * 18 | * @param who {@link Player} 19 | * @param recipe {@link BrewingRecipe} 20 | */ 21 | public AlchemistBrewEvent(@NotNull final Player who, final BrewingRecipe recipe) { 22 | super(who); 23 | 24 | this.recipe = recipe; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /TheAlchemy/src/main/java/com/qualityplus/alchemist/base/gui/select/SelectItemGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.alchemist.base.gui.select; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.SimpleGUI; 5 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 6 | import lombok.Builder; 7 | import lombok.Getter; 8 | 9 | /** 10 | * Select Item GUI Configuration 11 | */ 12 | @Getter 13 | public final class SelectItemGUIConfig extends OkaeriConfig implements SimpleGUI { 14 | private final CommonGUI commonGUI; 15 | 16 | /** 17 | * 18 | * @param commonGUI {@link CommonGUI} 19 | */ 20 | @Builder 21 | public SelectItemGUIConfig(final CommonGUI commonGUI) { 22 | this.commonGUI = commonGUI; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /TheAlchemy/src/main/java/com/qualityplus/alchemist/base/session/StandSessionImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.alchemist.base.session; 2 | 3 | import com.qualityplus.alchemist.api.session.StandSession; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import org.bukkit.Location; 8 | 9 | import java.util.UUID; 10 | 11 | /** 12 | * Implementation of {@link StandSession} 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | public final class StandSessionImpl implements StandSession { 18 | private final Location location; 19 | private final UUID player; 20 | } 21 | -------------------------------------------------------------------------------- /TheAlchemy/src/main/java/com/qualityplus/alchemist/base/stand/StandEffect.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.alchemist.base.stand; 2 | 3 | import com.qualityplus.assistant.inventory.Item; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | 9 | /** 10 | * Stand animation 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | public final class StandEffect extends OkaeriConfig { 16 | private Integer slot; 17 | private Item item; 18 | } 19 | -------------------------------------------------------------------------------- /TheAlchemy/src/main/java/com/qualityplus/alchemist/base/stand/StandEffects.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.alchemist.base.stand; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | /** 12 | * Stand animations 13 | */ 14 | @Getter 15 | @Setter 16 | @AllArgsConstructor 17 | public final class StandEffects extends OkaeriConfig { 18 | private Map> effectList; 19 | } 20 | -------------------------------------------------------------------------------- /TheAlchemy/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheAlchemist 2 | description: The Alchemist Plugin 3 | main: com.qualityplus.alchemist.TheAlchemist 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | commands: 10 | thealchemist: 11 | aliases: ["alchemist", "alch"] 12 | description: Alchemist's main command -------------------------------------------------------------------------------- /TheAnvil/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | dependencies { 3 | compileOnly 'org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT' 4 | compileOnly project(':TheEnchanting:TheEnchanting-NMS') 5 | compileOnly fileTree(dir: 'libs', include: ['*.jar']) 6 | compileOnly project(':TheEnchanting') 7 | } -------------------------------------------------------------------------------- /TheAnvil/libs/core-plugin-8.21.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r3back/the-core/088b0f0dbc9f32a90809bae549e9d45817aef6a2/TheAnvil/libs/core-plugin-8.21.0.jar -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/TheAnvil.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil; 2 | 3 | import com.qualityplus.anvil.api.TheAnvilAPI; 4 | import com.qualityplus.assistant.lib.eu.okaeri.injector.annotation.Inject; 5 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Scan; 6 | import com.qualityplus.assistant.okaeri.OkaeriSilentPlugin; 7 | import lombok.Getter; 8 | 9 | @Scan(deep = true) 10 | public final class TheAnvil extends OkaeriSilentPlugin { 11 | private static @Inject 12 | @Getter TheAnvilAPI api; 13 | } 14 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/api/TheAnvilAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.api; 2 | 3 | import com.qualityplus.anvil.api.provider.EnchantmentProvider; 4 | 5 | public interface TheAnvilAPI { 6 | EnchantmentProvider getProvider(); 7 | } 8 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/api/box/Box.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.api.box; 2 | 3 | import com.qualityplus.anvil.api.config.ConfigFiles; 4 | import com.qualityplus.anvil.base.config.*; 5 | import org.bukkit.plugin.Plugin; 6 | 7 | public interface Box { 8 | ConfigFiles files(); 9 | Plugin plugin(); 10 | } 11 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | public interface ConfigFiles extends ConfigReloader { 6 | C config(); 7 | I inventories(); 8 | M messages(); 9 | CMD commands(); 10 | } 11 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/api/event/EnchantingEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import org.bukkit.entity.Player; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public abstract class EnchantingEvent extends PlayerAssistantEvent { 8 | public EnchantingEvent(@NotNull Player who) { 9 | super(who); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/api/provider/EnchantmentProvider.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.api.provider; 2 | 3 | import com.qualityplus.anvil.api.session.AnvilSession.SessionResult; 4 | import com.qualityplus.anvil.api.session.AnvilSession; 5 | import org.bukkit.entity.Player; 6 | import org.bukkit.inventory.ItemStack; 7 | 8 | public interface EnchantmentProvider { 9 | public SessionResult getAnswer(AnvilSession session); 10 | 11 | public ItemStack getFinalItem(AnvilSession anvilSession); 12 | 13 | public double getMoneyCost(AnvilSession session); 14 | 15 | public double getLevelsCost(AnvilSession session); 16 | 17 | public boolean dontHavePermission(AnvilSession session, Player player); 18 | } 19 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/api/session/AnvilSession.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.api.session; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import org.bukkit.inventory.ItemStack; 6 | 7 | public interface AnvilSession { 8 | ItemStack getResult(); 9 | ItemStack getItemToUpgrade(); 10 | ItemStack getItemToSacrifice(); 11 | SessionResult getSessionResult(); 12 | 13 | @AllArgsConstructor 14 | public enum SessionResult{ 15 | ONLY_ITEM_TO_UPGRADE(false), 16 | ONLY_ITEM_TO_SACRIFICE(false), 17 | BOTH_ITEMS_SET(false), 18 | NOTHING_SET(false), 19 | ERROR_CANNOT_COMBINE_THOSE_ITEMS(true), 20 | ERROR_CONFLICT_ENCHANTMENTS(true); 21 | 22 | private final @Getter 23 | boolean error; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/base/TheAnvilAPIImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.base; 2 | 3 | import com.qualityplus.anvil.api.TheAnvilAPI; 4 | import com.qualityplus.anvil.api.provider.EnchantmentProvider; 5 | import com.qualityplus.assistant.lib.eu.okaeri.injector.annotation.Inject; 6 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 7 | import lombok.Getter; 8 | 9 | @Component 10 | public final class TheAnvilAPIImpl implements TheAnvilAPI { 11 | private @Inject 12 | @Getter EnchantmentProvider provider; 13 | } 14 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/base/event/TheEnchantingEnchantEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.base.event; 2 | 3 | import com.qualityplus.anvil.api.event.EnchantingEvent; 4 | import com.qualityplus.enchanting.api.session.EnchantmentSession; 5 | import lombok.Getter; 6 | import org.bukkit.entity.Player; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | @Getter 10 | public final class TheEnchantingEnchantEvent extends EnchantingEvent { 11 | private final EnchantmentSession session; 12 | 13 | public TheEnchantingEnchantEvent(@NotNull Player who, EnchantmentSession session) { 14 | super(who); 15 | 16 | this.session = session; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/base/gui/anvilmain/factory/ClickRequestStrategyFactory.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.base.gui.anvilmain.factory; 2 | 3 | import com.qualityplus.anvil.base.gui.anvilmain.request.ClickRequest; 4 | import com.qualityplus.anvil.base.gui.anvilmain.strategy.ClickRequestStrategy; 5 | 6 | import java.util.Optional; 7 | 8 | public interface ClickRequestStrategyFactory { 9 | public Optional getStrategy(final ClickRequest request); 10 | } 11 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/base/gui/anvilmain/strategy/CancellableClickRequestStrategy.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.base.gui.anvilmain.strategy; 2 | 3 | import com.qualityplus.anvil.base.gui.anvilmain.request.ClickRequest; 4 | 5 | import java.util.Optional; 6 | 7 | public abstract class CancellableClickRequestStrategy implements ClickRequestStrategy { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/base/gui/anvilmain/strategy/ClickRequestStrategy.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.base.gui.anvilmain.strategy; 2 | 3 | import com.qualityplus.anvil.base.gui.anvilmain.request.ClickRequest; 4 | 5 | import java.util.Optional; 6 | 7 | public interface ClickRequestStrategy { 8 | public boolean applies(final ClickRequest request); 9 | 10 | 11 | public void execute(final ClickRequest request); 12 | 13 | default void cancelEvent(final ClickRequest request) { 14 | Optional.ofNullable(request.getEvent()).ifPresent(e -> e.setCancelled(true)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/base/requirement/VanillaEnchantRequirement.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.base.requirement; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.*; 5 | 6 | import java.util.Map; 7 | 8 | @Data 9 | @Builder 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @EqualsAndHashCode(callSuper = true) 13 | public class VanillaEnchantRequirement extends OkaeriConfig { 14 | private Map requiredLevelsToEnchant; 15 | } 16 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/base/session/AnvilSessionImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.base.session; 2 | 3 | import com.qualityplus.anvil.api.session.AnvilSession; 4 | import com.qualityplus.anvil.util.AnvilFinderUtil; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | import org.bukkit.inventory.ItemStack; 8 | 9 | @Getter 10 | @AllArgsConstructor 11 | public final class AnvilSessionImpl implements AnvilSession { 12 | private final ItemStack result; 13 | private final ItemStack itemToUpgrade; 14 | private final ItemStack itemToSacrifice; 15 | 16 | @Override 17 | public SessionResult getSessionResult() { 18 | return AnvilFinderUtil.getAnswer(this); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/util/AnvilItemStackUtil.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.util; 2 | 3 | import lombok.experimental.UtilityClass; 4 | @UtilityClass 5 | public class AnvilItemStackUtil { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /TheAnvil/src/main/java/com/qualityplus/anvil/util/ClickSlot.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.anvil.util; 2 | 3 | import com.qualityplus.assistant.inventory.Item; 4 | import lombok.experimental.UtilityClass; 5 | 6 | @UtilityClass 7 | public final class ClickSlot { 8 | public boolean isSlot(final int slot, final Item item) { 9 | return item != null && item.isEnabled() && item.getSlot() == slot; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /TheAnvil/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheAnvil 2 | description: The Anvil Plugin 3 | main: com.qualityplus.anvil.TheAnvil 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | softdepend: [EcoEnchants, TheEnchanting] 10 | commands: 11 | theanvil: 12 | aliases: ["anvil", "theanv"] 13 | description: Anvil's main command -------------------------------------------------------------------------------- /TheAuction/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'checkstyle' 3 | } 4 | 5 | dependencies { 6 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 7 | } 8 | 9 | checkstyle { 10 | toolVersion = '8.20' 11 | configFile = file('../config/checkstyle/checkstyle.xml') 12 | ignoreFailures = false 13 | showViolations = true 14 | showViolations = true 15 | maxWarnings = 0 16 | sourceSets = [sourceSets.main] 17 | } -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/api/TheAuctionAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.api; 2 | 3 | import com.qualityplus.auction.api.service.AuctionService; 4 | 5 | /** 6 | * Makes the auction API 7 | */ 8 | public interface TheAuctionAPI { 9 | /** 10 | * Makes an auctions service 11 | * 12 | * @return {@link AuctionService} 13 | */ 14 | public AuctionService getAuctionService(); 15 | } 16 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/api/event/BankEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import org.bukkit.entity.Player; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | /** 8 | * Utility class for bank event 9 | */ 10 | public abstract class BankEvent extends PlayerAssistantEvent { 11 | 12 | /** 13 | * Adds bank event 14 | * 15 | * @param who {@link Player} 16 | */ 17 | public BankEvent(final @NotNull Player who) { 18 | super(who); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/api/filter/algorithm/FilterAlgorithm.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.api.filter.algorithm; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Adds filter algorithm 7 | * 8 | * @param {@link FilterAlgorithm} 9 | */ 10 | public interface FilterAlgorithm { 11 | /** 12 | * Add filter 13 | * 14 | * @param filter Filter 15 | * @return Filter 16 | */ 17 | public List filter(List filter); 18 | 19 | /** 20 | * Adds a data 21 | * 22 | * @param key Key 23 | * @param value Value 24 | */ 25 | public void addData(String key, String value); 26 | } 27 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/api/filter/method/FilterMethod.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.api.filter.method; 2 | 3 | import com.qualityplus.auction.api.filter.algorithm.FilterAlgorithm; 4 | import com.qualityplus.auction.api.filter.type.FilterType; 5 | import com.qualityplus.auction.persistence.data.AuctionItem; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import com.qualityplus.assistant.lib.eu.okaeri.configs.annotation.Exclude; 8 | import lombok.Data; 9 | 10 | /** 11 | * Utility class for filter method 12 | */ 13 | @Data 14 | public final class FilterMethod extends OkaeriConfig { 15 | private String id; 16 | private FilterType type; 17 | @Exclude 18 | private FilterAlgorithm filterAlgorithm; 19 | } 20 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/api/filter/type/FilterType.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.api.filter.type; 2 | 3 | /** 4 | * Represents filter type 5 | */ 6 | public enum FilterType { 7 | HIGHEST_PRICE, 8 | LOWEST_PRICE; 9 | } 10 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/api/gui/GUIDisplayItem.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.api.gui; 2 | 3 | import com.qualityplus.assistant.lib.com.cryptomorin.xseries.XMaterial; 4 | import com.qualityplus.assistant.inventory.background.Background; 5 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Getter; 9 | import lombok.Setter; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * Utility class for gui display item 15 | */ 16 | @Getter 17 | @Setter 18 | @AllArgsConstructor 19 | @Builder 20 | public final class GUIDisplayItem extends OkaeriConfig { 21 | private int slot; 22 | private XMaterial icon; 23 | private String texture; 24 | private List description; 25 | private Background background; 26 | } 27 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/api/searcher/Searcher.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.api.searcher; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Adds an interface searcher 7 | * 8 | * @param {@link Searcher} 9 | */ 10 | public interface Searcher { 11 | /** 12 | * Adds list 13 | * 14 | * @return Filtered 15 | */ 16 | public List getFiltered(); 17 | } 18 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/api/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.api.service; 2 | 3 | import com.qualityplus.auction.persistence.data.User; 4 | 5 | import java.util.Optional; 6 | import java.util.UUID; 7 | 8 | /** 9 | * Service interface for users 10 | */ 11 | public interface UserService { 12 | /** 13 | * Adds an uuid 14 | * 15 | * @param uuid {@link UUID} 16 | * @return Optional of {@link User} 17 | */ 18 | public Optional getUser(UUID uuid); 19 | 20 | /** 21 | * Adds user 22 | * 23 | * @param user {@link User} 24 | */ 25 | public void addUser(User user); 26 | 27 | /** 28 | * Remove User 29 | * 30 | * @param user {@link User} 31 | */ 32 | public void removeUser(User user); 33 | } 34 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/base/TheAuctionAPIImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.base; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.injector.annotation.Inject; 4 | import com.qualityplus.auction.api.TheAuctionAPI; 5 | import com.qualityplus.auction.api.service.AuctionService; 6 | 7 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 8 | import lombok.Getter; 9 | 10 | /** 11 | * Utility class for auction api 12 | */ 13 | @Component 14 | public final class TheAuctionAPIImpl implements TheAuctionAPI { 15 | private @Inject 16 | @Getter AuctionService AuctionService; 17 | } 18 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/base/event/BankInteractEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.base.event; 2 | 3 | import com.qualityplus.auction.api.event.BankEvent; 4 | import org.bukkit.entity.Player; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | /** 8 | * Utility class bank interact event 9 | */ 10 | public final class BankInteractEvent extends BankEvent { 11 | /** 12 | * Adds bank interact event 13 | * 14 | * @param who {@link BankInteractEvent} 15 | */ 16 | public BankInteractEvent(@NotNull final Player who) { 17 | super(who); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/base/searcher/filters/BinFilter.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.base.searcher.filters; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | import java.util.Arrays; 6 | 7 | /** 8 | * makes a bin filters 9 | */ 10 | @AllArgsConstructor 11 | public enum BinFilter { 12 | AUCTION_ONLY(2), 13 | BIN_ONLY(1), 14 | SHOW_ALL(0); 15 | 16 | public final int level; 17 | 18 | /** 19 | * Makes a bin filter 20 | * 21 | * @return {@link BinFilter} 22 | */ 23 | public BinFilter getNext() { 24 | return Arrays.stream(values()) 25 | .filter(sortBy -> sortBy.level == this.level + 1) 26 | .findFirst() 27 | .orElse(BinFilter.SHOW_ALL); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/base/searcher/filters/CategoryFilter.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.base.searcher.filters; 2 | 3 | import com.qualityplus.auction.api.box.Box; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | 7 | /** 8 | * Utility class for category filters 9 | */ 10 | @AllArgsConstructor @Getter 11 | public final class CategoryFilter { 12 | private final String category; 13 | private final Box box; 14 | } 15 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/base/searcher/filters/SortFilter.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.base.searcher.filters; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | import java.util.Arrays; 6 | 7 | /** 8 | * Makes a filter sorts 9 | */ 10 | @AllArgsConstructor 11 | public enum SortFilter { 12 | RANDOM(3), 13 | ENDING_SOON(2), 14 | LOWEST_PRICE(1), 15 | HIGHEST_PRICE(0); 16 | 17 | public final int level; 18 | 19 | /** 20 | * makes a sort filter 21 | * 22 | * @return {@link SortFilter} 23 | */ 24 | public SortFilter getNext() { 25 | return Arrays.stream(values()) 26 | .filter(sortBy -> sortBy.level == this.level + 1) 27 | .findFirst() 28 | .orElse(SortFilter.HIGHEST_PRICE); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/base/searcher/filters/StringFilter.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.base.searcher.filters; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * Utility class for filter 8 | */ 9 | @AllArgsConstructor @Getter 10 | public final class StringFilter { 11 | private final String toSearch; 12 | } 13 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/persistence/data/AuctionBid.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.persistence.data; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | import java.util.UUID; 9 | 10 | /** 11 | * Utility class for auction bids 12 | */ 13 | @AllArgsConstructor 14 | @Getter 15 | @Setter 16 | public final class AuctionBid extends OkaeriConfig { 17 | private UUID bidder; 18 | private double bidAmount; 19 | private long timeAgo; 20 | private boolean claimedBack = false; 21 | } 22 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/persistence/data/AuctionHouse.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.persistence.data; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | /** 11 | * Makes an auctions house 12 | */ 13 | @EqualsAndHashCode(callSuper = true) 14 | @Data 15 | public final class AuctionHouse extends Document { 16 | private String name; 17 | private List normalItems = new ArrayList<>(); 18 | } 19 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/persistence/data/AuctionStats.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.persistence.data; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | /** 8 | * Makes auction stats 9 | */ 10 | @Data @EqualsAndHashCode(callSuper = true) 11 | public final class AuctionStats extends OkaeriConfig { 12 | //Buyer 13 | private int auctionsCreated; 14 | private int auctionsCompletedWithBids; 15 | private int auctionsCompletedWithoutBids; 16 | private double totalMoneyEarned; 17 | private double moneySpentOnFees; 18 | 19 | //Seller 20 | private int auctionsWon; 21 | private double totalBids; 22 | private double highestBid; 23 | private double moneySpent; 24 | } 25 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/persistence/data/AuctionTime.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.persistence.data; 2 | 3 | import com.qualityplus.assistant.lib.com.cryptomorin.xseries.XMaterial; 4 | import com.qualityplus.assistant.util.time.HumanTime; 5 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | 10 | /** 11 | * Represents the auction time 12 | */ 13 | @AllArgsConstructor 14 | @Getter 15 | @Setter 16 | public final class AuctionTime extends OkaeriConfig { 17 | private HumanTime timer; 18 | private double fee; 19 | private XMaterial icon; 20 | private int slot; 21 | } 22 | -------------------------------------------------------------------------------- /TheAuction/src/main/java/com/qualityplus/auction/util/AuctionPlaceholderUtil.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.auction.util; 2 | 3 | import com.qualityplus.assistant.api.util.IPlaceholder; 4 | import lombok.experimental.UtilityClass; 5 | 6 | import java.util.Collections; 7 | import java.util.List; 8 | 9 | /** 10 | * Utility class for placeholder 11 | */ 12 | @UtilityClass 13 | public class AuctionPlaceholderUtil { 14 | /** 15 | * Makes a list placeholder 16 | * 17 | * @return an {@link IPlaceholder} 18 | */ 19 | public List getPlaceholders() { 20 | return Collections.emptyList(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /TheAuction/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheAuction 2 | description: The Auction Plugin 3 | main: com.qualityplus.auction.TheAuction 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | commands: 10 | theauction: 11 | aliases: [ah, auctionhouse, auction] 12 | description: TheAuction's main command -------------------------------------------------------------------------------- /TheBank/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 3 | } -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/TheBankAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api; 2 | 3 | public interface TheBankAPI { 4 | } 5 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/box/Box.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.box; 2 | 3 | import com.qualityplus.bank.api.config.ConfigFiles; 4 | import com.qualityplus.bank.api.service.BankService; 5 | import com.qualityplus.bank.base.config.*; 6 | import com.qualityplus.bank.persistence.BankRepository; 7 | import org.bukkit.plugin.Plugin; 8 | 9 | public interface Box { 10 | ConfigFiles files(); 11 | BankRepository repository(); 12 | BankService service(); 13 | Plugin plugin(); 14 | } 15 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | public interface ConfigFiles extends ConfigReloader { 6 | C config(); 7 | I inventories(); 8 | M messages(); 9 | CMD commands(); 10 | BU bankUpgrades(); 11 | } 12 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/event/BankEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.AssistantEvent; 4 | import com.qualityplus.bank.persistence.data.BankData; 5 | import com.qualityplus.bank.persistence.data.BankTransaction; 6 | import lombok.Getter; 7 | import org.bukkit.entity.Player; 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | @Getter 11 | public abstract class BankEvent extends AssistantEvent { 12 | private final BankTransaction bankTransaction; 13 | private final BankData bankData; 14 | 15 | public BankEvent(final @NotNull BankData bankData, final BankTransaction transaction) { 16 | this.bankTransaction = transaction; 17 | this.bankData = bankData; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/event/PlayerBankEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import com.qualityplus.bank.persistence.data.BankTransaction; 5 | import lombok.Getter; 6 | import org.bukkit.entity.Player; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | public abstract class PlayerBankEvent extends PlayerAssistantEvent { 10 | private @Getter final BankTransaction bankTransaction; 11 | 12 | public PlayerBankEvent(@NotNull Player who, BankTransaction transaction) { 13 | super(who); 14 | 15 | this.bankTransaction = transaction; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/exception/BankException.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.exception; 2 | 3 | import com.qualityplus.bank.persistence.data.BankData; 4 | import lombok.Getter; 5 | 6 | @Getter 7 | public abstract class BankException extends RuntimeException { 8 | private final BankData bankData; 9 | 10 | public BankException(final BankData bankData) { 11 | this.bankData = bankData; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/gui/GUIDisplayItem.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.gui; 2 | 3 | import com.qualityplus.assistant.lib.com.cryptomorin.xseries.XMaterial; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | 10 | import java.util.List; 11 | 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @Builder 16 | public final class GUIDisplayItem extends OkaeriConfig { 17 | private int slot; 18 | private XMaterial item; 19 | private String texture; 20 | private List description; 21 | } 22 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/handler/TransactionGateway.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.handler; 2 | 3 | import com.qualityplus.bank.api.response.TrxResponse; 4 | import com.qualityplus.bank.persistence.data.BankData; 5 | import com.qualityplus.bank.persistence.data.BankTransaction; 6 | 7 | import java.util.Optional; 8 | 9 | public interface TransactionGateway { 10 | public Optional handle(final BankData data, final BankTransaction transaction, final boolean showMessage); 11 | } 12 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/handler/TrxHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.handler; 2 | 3 | import com.qualityplus.bank.api.request.TrxRequest; 4 | import com.qualityplus.bank.api.response.TrxResponse; 5 | 6 | public interface TrxHandler { 7 | /** 8 | * 9 | * @param request {@link TrxRequest} 10 | * @return {@link TrxResponse} 11 | */ 12 | public TrxResponse handle(final TrxRequest request); 13 | } 14 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/request/TrxRequest.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.request; 2 | 3 | import com.qualityplus.bank.persistence.data.BankData; 4 | import com.qualityplus.bank.persistence.data.BankTransaction; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | @Data 9 | @Builder 10 | public final class TrxRequest { 11 | private final BankTransaction transaction; 12 | private final BankData bankData; 13 | private final boolean sendMsg; 14 | } 15 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/response/TrxResponse.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.response; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public final class TrxResponse { 9 | private double amount; 10 | private double playerBalance; 11 | private double bankBalance; 12 | } 13 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/service/BankService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.service; 2 | 3 | import com.qualityplus.assistant.api.service.DataManagementService; 4 | import com.qualityplus.bank.api.response.TrxResponse; 5 | import com.qualityplus.bank.persistence.data.BankData; 6 | import com.qualityplus.bank.persistence.data.BankTransaction; 7 | import org.bukkit.entity.Player; 8 | 9 | import java.util.Optional; 10 | 11 | public interface BankService extends DataManagementService { 12 | Optional handleTransaction(final Player player, final BankTransaction transaction, final boolean sendMessages); 13 | } 14 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/api/transaction/TransactionType.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.api.transaction; 2 | 3 | public enum TransactionType { 4 | DEPOSIT, 5 | WITHDRAW, 6 | SET 7 | } 8 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/base/TheBankAPIImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.base; 2 | 3 | import com.qualityplus.bank.api.TheBankAPI; 4 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 5 | 6 | @Component 7 | public final class TheBankAPIImpl implements TheBankAPI { 8 | } 9 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/base/event/BankInteractEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.base.event; 2 | 3 | import com.qualityplus.bank.api.event.BankEvent; 4 | import com.qualityplus.bank.persistence.data.BankData; 5 | import com.qualityplus.bank.persistence.data.BankTransaction; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | public final class BankInteractEvent extends BankEvent { 9 | public BankInteractEvent(final @NotNull BankData who, final BankTransaction transaction) { 10 | super(who, transaction); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/base/exception/BankLimitException.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.base.exception; 2 | 3 | import com.qualityplus.bank.api.exception.BankException; 4 | import com.qualityplus.bank.persistence.data.BankData; 5 | 6 | public final class BankLimitException extends BankException { 7 | public BankLimitException(BankData bankData) { 8 | super(bankData); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/base/exception/NotEnoughMoneyException.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.base.exception; 2 | 3 | import com.qualityplus.bank.api.exception.BankException; 4 | import com.qualityplus.bank.persistence.data.BankData; 5 | 6 | public final class NotEnoughMoneyException extends BankException { 7 | public NotEnoughMoneyException(final BankData bankData) { 8 | super(bankData); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/base/exception/ZeroMoneyException.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.base.exception; 2 | 3 | import com.qualityplus.bank.api.exception.BankException; 4 | import com.qualityplus.bank.persistence.data.BankData; 5 | 6 | /** 7 | * Exception thrown when player has zero money in his bank 8 | */ 9 | public final class ZeroMoneyException extends BankException { 10 | public ZeroMoneyException(final BankData bankData) { 11 | super(bankData); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/base/upgrade/UpgradeInterest.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.base.upgrade; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | public final class UpgradeInterest extends OkaeriConfig { 12 | private double interestPercentage; 13 | private double interestLimitInMoney; 14 | private double from; 15 | private double to; 16 | } 17 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/listener/InventoryListener.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.listener; 2 | 3 | import com.qualityplus.bank.base.gui.BankGUI; 4 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 5 | import org.bukkit.event.EventHandler; 6 | import org.bukkit.event.Listener; 7 | import org.bukkit.event.inventory.InventoryClickEvent; 8 | 9 | @Component 10 | public final class InventoryListener implements Listener { 11 | @EventHandler 12 | public void onInventoryClick(InventoryClickEvent event) { 13 | if (event.getClickedInventory() != null && event.getInventory().getHolder() != null) 14 | if (event.getInventory().getHolder() instanceof BankGUI) 15 | ((BankGUI) event.getInventory().getHolder()).onInventoryClick(event); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /TheBank/src/main/java/com/qualityplus/bank/util/BankMessageUtil.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.bank.util; 2 | 3 | import com.qualityplus.assistant.util.StringUtils; 4 | import com.qualityplus.bank.api.request.TrxRequest; 5 | import lombok.experimental.UtilityClass; 6 | import org.bukkit.Bukkit; 7 | import org.bukkit.entity.Player; 8 | 9 | @UtilityClass 10 | public final class BankMessageUtil { 11 | public void sendMessageToTrxActor(final TrxRequest request, final String message) { 12 | if (!request.isSendMsg()) { 13 | return; 14 | } 15 | 16 | final Player player = Bukkit.getPlayer(request.getBankData().getUuid()); 17 | 18 | if (player == null) { 19 | return; 20 | } 21 | 22 | player.sendMessage(StringUtils.color(message)); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /TheBank/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheBank 2 | description: The Bank Plugin 3 | main: com.qualityplus.bank.TheBank 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | commands: 10 | thebank: 11 | aliases: [bank] 12 | description: TheBank's main command -------------------------------------------------------------------------------- /TheCollections/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 3 | compileOnly fileTree(dir: 'libs', include: ['*.jar']) 4 | compileOnly project(':TheMinions') 5 | } -------------------------------------------------------------------------------- /TheCollections/libs/JetsMinions.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r3back/the-core/088b0f0dbc9f32a90809bae549e9d45817aef6a2/TheCollections/libs/JetsMinions.jar -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/api/TheCollectionsAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.api; 2 | 3 | import com.qualityplus.collections.api.service.CollectionsService; 4 | import org.bukkit.plugin.Plugin; 5 | 6 | public interface TheCollectionsAPI { 7 | /** 8 | * Service to manage Player Skills 9 | * 10 | * @return SkillsService 11 | */ 12 | CollectionsService getCollectionsService(); 13 | 14 | /** 15 | * 16 | * @return Plugin Instance 17 | */ 18 | Plugin getPlugin(); 19 | } 20 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/api/box/Box.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.api.box; 2 | 3 | import com.qualityplus.collections.api.config.ConfigFiles; 4 | import com.qualityplus.collections.api.service.CollectionsService; 5 | import com.qualityplus.collections.base.config.*; 6 | import org.bukkit.plugin.Plugin; 7 | 8 | public interface Box { 9 | ConfigFiles files(); 10 | CollectionsService service(); 11 | Plugin plugin(); 12 | } 13 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | public interface ConfigFiles extends ConfigReloader { 6 | T config(); 7 | I inventories(); 8 | M messages(); 9 | C commands(); 10 | CT collections(); 11 | CA categories(); 12 | } 13 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/api/event/CollectionEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import com.qualityplus.collections.base.collection.Collection; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import org.bukkit.entity.Player; 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | @Getter 11 | @Setter 12 | public abstract class CollectionEvent extends PlayerAssistantEvent { 13 | private Collection collection; 14 | 15 | public CollectionEvent(@NotNull Player who, Collection collection) { 16 | super(who); 17 | this.collection = collection; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/api/service/AntiExploitService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.api.service; 2 | 3 | import org.bukkit.entity.Player; 4 | import org.bukkit.metadata.Metadatable; 5 | 6 | public interface AntiExploitService { 7 | long getPlayerTimer(Player player); 8 | 9 | void setPlayerTimer(Player player, long value); 10 | 11 | void addMetadata(Metadatable metadatable); 12 | 13 | boolean hasMetadata(Metadatable metadatable); 14 | } 15 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/api/service/CollectionsService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.api.service; 2 | 3 | import com.qualityplus.assistant.api.service.DataManagementService; 4 | import com.qualityplus.collections.base.collection.Collection; 5 | import com.qualityplus.collections.persistance.data.UserData; 6 | import org.bukkit.entity.Player; 7 | 8 | public interface CollectionsService extends DataManagementService { 9 | void addXp(Player player, Collection collection, double xp); 10 | } 11 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/base/TheCollectionsAPIImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.base; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.injector.annotation.Inject; 4 | import com.qualityplus.collections.api.TheCollectionsAPI; 5 | import com.qualityplus.collections.api.service.CollectionsService; 6 | 7 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 8 | import lombok.Getter; 9 | import org.bukkit.plugin.Plugin; 10 | 11 | @Component 12 | public final class TheCollectionsAPIImpl implements TheCollectionsAPI { 13 | private @Getter @Inject CollectionsService collectionsService; 14 | private @Getter @Inject Plugin plugin; 15 | } 16 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/base/collection/category/CollectionCategory.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.base.collection.category; 2 | 3 | import com.qualityplus.collections.base.collection.gui.GUIOptions; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.Builder; 6 | import lombok.Getter; 7 | 8 | @Getter 9 | public final class CollectionCategory extends OkaeriConfig { 10 | private final String id; 11 | private final String displayName; 12 | private final GUIOptions guiOptions; 13 | 14 | @Builder 15 | public CollectionCategory(String id, String displayName, GUIOptions options){ 16 | this.id = id; 17 | this.guiOptions = options; 18 | this.displayName = displayName; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/base/collection/executor/ExecutorType.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.base.collection.executor; 2 | 3 | 4 | public enum ExecutorType { 5 | /** 6 | * Called when a player Pick up by {@link org.bukkit.Material} 7 | */ 8 | BY_PICK_UP_MATERIAL, 9 | /** 10 | * Called when a player Pick up by {@link org.bukkit.inventory.ItemStack} 11 | */ 12 | BY_PICK_UP_ITEM_STACK 13 | } 14 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/base/collection/rewards/CollectionsCommandRewards.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.base.collection.rewards; 2 | 3 | import com.qualityplus.assistant.api.common.rewards.LevellableRewards; 4 | import com.qualityplus.assistant.api.common.rewards.commands.CommandReward; 5 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | 10 | import java.util.HashMap; 11 | import java.util.List; 12 | import java.util.Map; 13 | 14 | @AllArgsConstructor 15 | @Getter 16 | @Setter 17 | public final class CollectionsCommandRewards extends OkaeriConfig implements LevellableRewards { 18 | private Map> rewards = new HashMap<>(); 19 | } -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/base/event/CollectionsLevelUPEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.base.event; 2 | 3 | import com.qualityplus.collections.api.event.CollectionEvent; 4 | import com.qualityplus.collections.base.collection.Collection; 5 | import lombok.Getter; 6 | import org.bukkit.entity.Player; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | public final class CollectionsLevelUPEvent extends CollectionEvent { 10 | private @Getter final int newLevel; 11 | 12 | public CollectionsLevelUPEvent(@NotNull Player who, Collection collection, int newLevel) { 13 | super(who, collection); 14 | 15 | this.newLevel = newLevel; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/base/event/CollectionsUnlockEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.base.event; 2 | 3 | import com.qualityplus.collections.api.event.CollectionEvent; 4 | import com.qualityplus.collections.base.collection.Collection; 5 | import org.bukkit.entity.Player; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | public final class CollectionsUnlockEvent extends CollectionEvent { 9 | 10 | public CollectionsUnlockEvent(@NotNull Player who, Collection collection) { 11 | super(who, collection); 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/base/event/CollectionsXPGainEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.base.event; 2 | 3 | import com.qualityplus.collections.api.event.CollectionEvent; 4 | import com.qualityplus.collections.base.collection.Collection; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import org.bukkit.entity.Player; 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | public final class CollectionsXPGainEvent extends CollectionEvent { 11 | private @Getter @Setter double xp; 12 | 13 | public CollectionsXPGainEvent(@NotNull Player who, Collection collection, double xp) { 14 | super(who, collection); 15 | this.xp = xp; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/gui/category/CategoryGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.gui.category; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.Item; 5 | import com.qualityplus.assistant.inventory.SimpleGUI; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Getter; 9 | import lombok.NoArgsConstructor; 10 | 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @Getter 14 | public final class CategoryGUIConfig extends OkaeriConfig implements SimpleGUI { 15 | private CommonGUI commonGUI; 16 | private Item unlockedItem; 17 | private Item lockedItem; 18 | private Item categoryItem; 19 | private Item goBackItem; 20 | } 21 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/gui/main/MainGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.gui.main; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.Item; 5 | import com.qualityplus.assistant.inventory.SimpleGUI; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Getter; 9 | import lombok.NoArgsConstructor; 10 | 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @Getter 14 | public final class MainGUIConfig extends OkaeriConfig implements SimpleGUI { 15 | private CommonGUI commonGUI; 16 | private Item collectionsItem; 17 | private Item allCollectionsItem; 18 | private Item customGoBackItem; 19 | } 20 | -------------------------------------------------------------------------------- /TheCollections/src/main/java/com/qualityplus/collections/persistance/data/UserData.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.collections.persistance.data; 2 | 3 | import com.qualityplus.collections.persistance.data.user.UserCollections; 4 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | import java.util.UUID; 9 | 10 | @Data @EqualsAndHashCode(callSuper = true) 11 | public final class UserData extends Document { 12 | private UUID uuid; 13 | private String name; 14 | private UserCollections collections = new UserCollections(); 15 | } 16 | -------------------------------------------------------------------------------- /TheCollections/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheCollections 2 | description: The Collections Plugin 3 | main: com.qualityplus.collections.TheCollections 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | softdepend: [TheMinions] 10 | commands: 11 | thecollections: 12 | aliases: ["collections", "cl"] 13 | description: Collections's main command -------------------------------------------------------------------------------- /TheCrafting/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 3 | } -------------------------------------------------------------------------------- /TheCrafting/src/main/java/com/qualityplus/crafting/api/TheCraftingAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.crafting.api; 2 | 3 | public interface TheCraftingAPI { 4 | } 5 | -------------------------------------------------------------------------------- /TheCrafting/src/main/java/com/qualityplus/crafting/api/box/Box.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.crafting.api.box; 2 | 3 | import com.qualityplus.crafting.api.config.ConfigFiles; 4 | import com.qualityplus.crafting.base.config.*; 5 | import org.bukkit.plugin.Plugin; 6 | 7 | public interface Box { 8 | ConfigFiles files(); 9 | Plugin plugin(); 10 | } 11 | -------------------------------------------------------------------------------- /TheCrafting/src/main/java/com/qualityplus/crafting/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.crafting.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | public interface ConfigFiles extends ConfigReloader { 6 | C config(); 7 | R recipes(); 8 | I inventories(); 9 | M messages(); 10 | CMD commands(); 11 | CA categories(); 12 | B blockedCraftings(); 13 | } 14 | -------------------------------------------------------------------------------- /TheCrafting/src/main/java/com/qualityplus/crafting/api/edition/EditionObject.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.crafting.api.edition; 2 | 3 | import com.qualityplus.crafting.api.edition.RecipeEdition.EditionType; 4 | import com.qualityplus.crafting.base.recipes.CustomRecipe; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | 9 | @AllArgsConstructor 10 | @Getter 11 | @Setter 12 | public final class EditionObject { 13 | private final CustomRecipe recipe; 14 | private final EditionType type; 15 | } 16 | -------------------------------------------------------------------------------- /TheCrafting/src/main/java/com/qualityplus/crafting/api/edition/RecipeEdition.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.crafting.api.edition; 2 | 3 | import java.util.UUID; 4 | 5 | public interface RecipeEdition { 6 | void setEditMode(UUID uuid, EditionObject type); 7 | 8 | void removeEditMode(UUID uuid); 9 | 10 | public enum EditionType{ 11 | DISPLAY_NAME, 12 | CATEGORY, 13 | SLOT, 14 | PAGE, 15 | PERMISSION 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /TheCrafting/src/main/java/com/qualityplus/crafting/api/event/AlchemistEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.crafting.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import org.bukkit.entity.Player; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public abstract class AlchemistEvent extends PlayerAssistantEvent { 8 | public AlchemistEvent(@NotNull Player who) { 9 | super(who); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /TheCrafting/src/main/java/com/qualityplus/crafting/api/recipes/IRecipe.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.crafting.api.recipes; 2 | 3 | import org.bukkit.inventory.ItemStack; 4 | 5 | public interface IRecipe { 6 | ItemStack getResult(); 7 | } 8 | -------------------------------------------------------------------------------- /TheCrafting/src/main/java/com/qualityplus/crafting/base/TheCraftingAPIImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.crafting.base; 2 | 3 | import com.qualityplus.crafting.api.TheCraftingAPI; 4 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 5 | 6 | @Component 7 | public final class TheCraftingAPIImpl implements TheCraftingAPI { 8 | } 9 | -------------------------------------------------------------------------------- /TheCrafting/src/main/java/com/qualityplus/crafting/base/event/TheCraftingCraftEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.crafting.base.event; 2 | 3 | import com.qualityplus.crafting.api.event.AlchemistEvent; 4 | import com.qualityplus.crafting.base.recipes.CustomRecipe; 5 | import lombok.Getter; 6 | import org.bukkit.entity.Player; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | @Getter 10 | public final class TheCraftingCraftEvent extends AlchemistEvent { 11 | private final CustomRecipe recipe; 12 | 13 | public TheCraftingCraftEvent(@NotNull Player who, CustomRecipe recipe) { 14 | super(who); 15 | 16 | this.recipe = recipe; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /TheCrafting/src/main/java/com/qualityplus/crafting/base/recipes/VanillaRecipe.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.crafting.base.recipes; 2 | 3 | import com.qualityplus.crafting.api.recipes.IRecipe; 4 | import lombok.AllArgsConstructor; 5 | import org.bukkit.inventory.ItemStack; 6 | 7 | @AllArgsConstructor 8 | public final class VanillaRecipe implements IRecipe { 9 | private final ItemStack result; 10 | 11 | @Override 12 | public ItemStack getResult() { 13 | return result; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /TheCrafting/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheCrafting 2 | description: The Crafting Plugin 3 | main: com.qualityplus.crafting.TheCrafting 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | commands: 10 | thecrafting: 11 | aliases: ["crafting", "tc"] 12 | description: Crafting's main command -------------------------------------------------------------------------------- /TheDragon/build.gradle: -------------------------------------------------------------------------------- 1 | repositories { 2 | maven { 3 | url = uri("https://repo.papermc.io/repository/maven-public/") 4 | } 5 | } 6 | 7 | dependencies { 8 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 9 | compileOnly("io.papermc.paper:paper-api:1.21.3-R0.1-SNAPSHOT") 10 | } -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/TheDragonAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api; 2 | 3 | import com.qualityplus.dragon.api.service.*; 4 | import org.bukkit.plugin.Plugin; 5 | 6 | public interface TheDragonAPI { 7 | GamePlayerCheckService getGamePlayerCheckService(); 8 | GuardianEditService getGuardianEditService(); 9 | StructureService getStructureService(); 10 | GuardianService getGuardianService(); 11 | BossBarService getBossBarService(); 12 | DragonService getDragonService(); 13 | GameService getGameService(); 14 | UserService getUserService(); 15 | Plugin getPlugin(); 16 | } 17 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | import com.qualityplus.assistant.api.config.ConfigSaver; 5 | 6 | public interface ConfigFiles extends ConfigReloader, ConfigSaver { 7 | C config(); 8 | E events(); 9 | G guardians(); 10 | D dragons(); 11 | I inventories(); 12 | M messages(); 13 | R rewards(); 14 | S structures(); 15 | CMD commands(); 16 | } -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/event/SwitchableEvents.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.event; 2 | 3 | /** 4 | * Handle Events Scheduler during games 5 | */ 6 | public interface SwitchableEvents { 7 | /** 8 | * 9 | * @return Next DragonEvent 10 | */ 11 | DragonGameEvent getNext(); 12 | 13 | /** 14 | * 15 | * @return DragonEvent in Progress 16 | */ 17 | DragonGameEvent getCurrentEvent(); 18 | } 19 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/exception/InvalidSpawnException.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.exception; 2 | 3 | public final class InvalidSpawnException extends Throwable{ 4 | } 5 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/exception/check/NoSpawnException.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.exception.check; 2 | 3 | public final class NoSpawnException extends Throwable{ 4 | } 5 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/exception/check/NoStructureException.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.exception.check; 2 | 3 | public final class NoStructureException extends Throwable{ 4 | } 5 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/factory/DragonFactory.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.factory; 2 | 3 | import com.qualityplus.dragon.api.game.dragon.TheDragonEntity; 4 | import com.qualityplus.dragon.base.game.dragon.TheDragonEntityImpl; 5 | 6 | import java.util.Map; 7 | 8 | /** 9 | * Dragon Factory 10 | */ 11 | public interface DragonFactory { 12 | /** 13 | * Get A dragon to be used during a game 14 | * 15 | * @param map Dragons to search in 16 | * @return TheDragonEntity Selected 17 | */ 18 | TheDragonEntity getDragon(Map map); 19 | } 20 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/factory/GuardianFactory.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.factory; 2 | 3 | import com.qualityplus.dragon.api.game.guardian.Guardian; 4 | import com.qualityplus.dragon.base.configs.DragonEventsFile.GuardianChanceConfig; 5 | 6 | import java.util.List; 7 | 8 | public interface GuardianFactory { 9 | Guardian getRandom(List guardians); 10 | } 11 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/entity/LivingGameEntity.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.entity; 2 | 3 | public interface LivingGameEntity { 4 | } 5 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/guardian/Guardian.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.guardian; 2 | 3 | import org.bukkit.Location; 4 | import org.bukkit.entity.Entity; 5 | 6 | /** 7 | * Guardian Implementation 8 | */ 9 | public interface Guardian { 10 | /** 11 | * Spawn a Guardian in specific Location 12 | * 13 | * @param location Location to be spawned 14 | * @return Entity once spawned 15 | */ 16 | Entity spawn(Location location); 17 | 18 | /** 19 | * 20 | * @return Guardian ID 21 | */ 22 | String getID(); 23 | } 24 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/part/GameCountdown.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.part; 2 | 3 | import com.qualityplus.dragon.api.game.dragon.TheDragonEntity; 4 | 5 | import java.util.concurrent.CompletableFuture; 6 | 7 | /** 8 | * Dragon Countdown Manager Implementation 9 | */ 10 | public interface GameCountdown { 11 | /** 12 | * Start Countdown in a dragon game 13 | * 14 | * @param theDragonEntity TheDragonEntity during a game 15 | * @return When Countdown Finish 16 | */ 17 | CompletableFuture start(TheDragonEntity theDragonEntity); 18 | } 19 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/part/GameEnd.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.part; 2 | 3 | import com.qualityplus.dragon.base.game.player.EventPlayer; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * Implementation for the final phase of a DragonGame 9 | */ 10 | public interface GameEnd { 11 | /** 12 | * Send a Message when game finish 13 | */ 14 | void sendFinishMessage(final List players); 15 | } 16 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/part/GameEventSwitch.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.part; 2 | 3 | import com.qualityplus.dragon.api.event.SwitchableEvents; 4 | 5 | /** 6 | * Handles the Switchable Events during game 7 | */ 8 | public interface GameEventSwitch { 9 | /** 10 | * Switch Events 11 | */ 12 | void switchEvents(); 13 | 14 | /** 15 | * Stop Event Switching 16 | */ 17 | void stopSwitchEvents(); 18 | 19 | /** 20 | * 21 | * Handle Events Scheduler during games 22 | */ 23 | SwitchableEvents getSwitchableEvent(); 24 | } 25 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/part/GameExplosion.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.part; 2 | 3 | import com.qualityplus.assistant.api.addons.paster.session.PasterSession; 4 | 5 | import java.util.concurrent.CompletableFuture; 6 | 7 | /** 8 | * Handles Block Explosion during a game 9 | */ 10 | public interface GameExplosion { 11 | /** 12 | * 13 | * @return When Block explosion is finished 14 | */ 15 | public CompletableFuture makeBlockExplosion(final PasterSession session); 16 | } 17 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/player/GamePlayer.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.player; 2 | 3 | import org.bukkit.entity.Player; 4 | 5 | import java.util.List; 6 | import java.util.UUID; 7 | 8 | public interface GamePlayer { 9 | Player getPlayer(); 10 | UUID getUuid(); 11 | String getName(); 12 | double getDamage(); 13 | void addDamage(double damage); 14 | void removeDamage(double damage); 15 | 16 | void sendMessage(String message); 17 | void sendMessage(List message); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/ranking/GameRanking.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.ranking; 2 | 3 | import com.qualityplus.assistant.api.util.IPlaceholder; 4 | import com.qualityplus.dragon.base.game.player.EventPlayer; 5 | 6 | import java.util.List; 7 | import java.util.Optional; 8 | 9 | public interface GameRanking { 10 | List getPlaceholders(EventPlayer eventPlayer); 11 | 12 | Optional getByRank(int ranking); 13 | 14 | void refreshRanking(); 15 | } 16 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/reward/DragonReward.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.reward; 2 | 3 | import java.util.List; 4 | 5 | public interface DragonReward { 6 | int getDamageDone(); 7 | List getCommands(); 8 | } 9 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/settings/Settings.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.settings; 2 | 3 | import org.bukkit.Location; 4 | 5 | public interface Settings { 6 | Location getSpawn(); 7 | int couldownTime(); 8 | String schematic(); 9 | 10 | void setSchematic(String schematic); 11 | void setCouldownTime(int time); 12 | void setLocation(Location location); 13 | } 14 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/structure/AbstractStructure.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.structure; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import org.bukkit.Location; 7 | import org.bukkit.World; 8 | 9 | @AllArgsConstructor 10 | public abstract class AbstractStructure extends OkaeriConfig { 11 | protected @Getter final Location location; 12 | 13 | public World getWorld(){ 14 | return location.getWorld(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/structure/GameStructure.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.structure; 2 | 3 | import org.bukkit.Location; 4 | import org.bukkit.World; 5 | 6 | public interface GameStructure { 7 | void removeStructure(); 8 | 9 | Location getLocation(); 10 | 11 | World getWorld(); 12 | } 13 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/structure/StructureInfo.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.structure; 2 | 3 | public interface StructureInfo { 4 | String getId(); 5 | 6 | } 7 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/structure/type/DragonAltar.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.structure.type; 2 | 3 | import com.qualityplus.dragon.api.game.structure.GameStructure; 4 | 5 | public interface DragonAltar extends GameStructure { 6 | boolean isEnderKey(); 7 | void setEnderKey(boolean inUse); 8 | } 9 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/structure/type/DragonCrystal.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.structure.type; 2 | 3 | import com.qualityplus.dragon.api.game.structure.GameStructure; 4 | 5 | public interface DragonCrystal extends GameStructure { 6 | void spawn(); 7 | } 8 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/game/structure/type/DragonSpawn.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.game.structure.type; 2 | 3 | import com.qualityplus.dragon.api.game.structure.GameStructure; 4 | 5 | public interface DragonSpawn extends GameStructure { 6 | } 7 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/handler/ParticleHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.handler; 2 | 3 | import com.qualityplus.dragon.api.game.DragonGame; 4 | import org.bukkit.Particle; 5 | 6 | /** 7 | * Handle Particles During an Event 8 | */ 9 | public interface ParticleHandler { 10 | /** 11 | * Spell Particles 12 | * 13 | * @param dragonGame The Dragon Game 14 | * @param particle EnumParticle particle type 15 | */ 16 | public void spell(final DragonGame dragonGame, final Particle particle); 17 | } 18 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/handler/ProjectileHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.handler; 2 | 3 | import com.qualityplus.dragon.api.game.DragonGame; 4 | 5 | /** 6 | * Handle Projectiles During an Event 7 | */ 8 | public interface ProjectileHandler { 9 | /** 10 | * Shoot a projectile 11 | * 12 | * @param projectile ProjectileType 13 | * @param damage Amount of Damage 14 | * @param amount Projectile's quantity 15 | * @param dragonGame The Dragon Game 16 | */ 17 | void shoot(ProjectileType projectile, double damage, double amount, DragonGame dragonGame); 18 | 19 | enum ProjectileType{ 20 | FIREBALL(), 21 | DRAGONBALL(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/handler/ReplyHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.handler; 2 | 3 | /** 4 | * Reply Handler 5 | */ 6 | public interface ReplyHandler { 7 | void handle(P player, T message); 8 | } 9 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/service/AltarSetupService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.service; 2 | 3 | import java.util.UUID; 4 | 5 | public interface AltarSetupService { 6 | boolean playerIsInEditMode(UUID uuid); 7 | 8 | void addPlayer(UUID uuid); 9 | 10 | void removePlayer(UUID uuid); 11 | } 12 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/service/BossBarService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.service; 2 | 3 | /** 4 | * Interface to handle BossBar 5 | */ 6 | public interface BossBarService { 7 | /** 8 | * Send BossBar during Game 9 | */ 10 | public void startBossBar(); 11 | 12 | /** 13 | * Stop BossBar during Game 14 | */ 15 | public void stopBossBar(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/service/DragonService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.service; 2 | 3 | import com.qualityplus.dragon.api.controller.DragonController; 4 | import com.qualityplus.dragon.api.game.dragon.TheDragonEntity; 5 | import org.bukkit.entity.EnderDragon; 6 | 7 | import java.util.concurrent.CompletableFuture; 8 | 9 | public interface DragonService { 10 | void selectDragon(); 11 | void spawnDragon(); 12 | CompletableFuture killDragon(); 13 | 14 | TheDragonEntity getActiveDragon(); 15 | EnderDragon getActiveEnderDragon(); 16 | DragonController getDragonController(); 17 | } 18 | 19 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/service/GamePlayerCheckService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.service; 2 | 3 | /** 4 | * Interface to handle players during dragon game 5 | */ 6 | public interface GamePlayerCheckService { 7 | /** 8 | * Starts checking for in-game players 9 | */ 10 | public void startChecking(); 11 | 12 | /** 13 | * Stops checking process 14 | */ 15 | public void stopChecking(); 16 | } 17 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/service/GameService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.service; 2 | 3 | import com.qualityplus.assistant.api.addons.paster.session.PasterSession; 4 | import com.qualityplus.dragon.api.event.SwitchableEvents; 5 | 6 | import java.util.concurrent.CompletableFuture; 7 | 8 | public interface GameService { 9 | CompletableFuture startCountdown(); 10 | CompletableFuture makeBlockExplosion(PasterSession session); 11 | void switchEvents(); 12 | void stopSwitching(); 13 | SwitchableEvents getSwitchableEvent(); 14 | } 15 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/service/GuardianEditService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.service; 2 | 3 | import com.qualityplus.dragon.base.editmode.GuardianEditMode; 4 | 5 | import javax.annotation.Nullable; 6 | import java.util.UUID; 7 | 8 | public interface GuardianEditService { 9 | void setInEditMode(GuardianEditMode editMode); 10 | 11 | @Nullable 12 | GuardianEditMode getByPlayer(UUID uuid); 13 | 14 | void removeByPlayer(UUID uuid); 15 | } 16 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/service/GuardianService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.service; 2 | 3 | import com.qualityplus.dragon.api.game.guardian.Guardian; 4 | import com.qualityplus.dragon.base.configs.DragonEventsFile.GuardianChanceConfig; 5 | import org.bukkit.Location; 6 | 7 | import java.util.List; 8 | 9 | public interface GuardianService { 10 | Guardian getRandomGuardian(List guardianChanceConfigs); 11 | 12 | Location getRandomLocation(); 13 | } 14 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/service/GuardianSpawnFactory.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.service; 2 | 3 | import org.bukkit.Location; 4 | 5 | public interface GuardianSpawnFactory { 6 | Location getRandomLocation(); 7 | } 8 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/service/SchematicService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.service; 2 | 3 | import com.qualityplus.assistant.api.addons.paster.schematic.Schematic; 4 | 5 | import java.util.Optional; 6 | 7 | public interface SchematicService { 8 | void load(); 9 | 10 | Optional getSchematic(String name); 11 | 12 | boolean schematicExist(); 13 | } 14 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/api/service/UserDBService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.api.service; 2 | 3 | import com.qualityplus.assistant.api.service.DataManagementService; 4 | import com.qualityplus.dragon.persistance.data.UserData; 5 | 6 | public interface UserDBService extends DataManagementService { 7 | } 8 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/base/editmode/GuardianEditMode.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.base.editmode; 2 | 3 | import com.qualityplus.dragon.base.game.guardian.DragonGuardian; 4 | import com.qualityplus.dragon.base.service.GuardianEditServiceImpl.EditType; 5 | import lombok.*; 6 | 7 | import java.util.UUID; 8 | 9 | @AllArgsConstructor 10 | @NoArgsConstructor 11 | @Getter @Setter 12 | @Builder 13 | public class GuardianEditMode { 14 | private UUID uuid; 15 | private EditType editType; 16 | private DragonGuardian dragonGuardian; 17 | } 18 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/base/game/guardian/GuardianArmor.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.base.game.guardian; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | import org.bukkit.inventory.ItemStack; 9 | 10 | @Getter 11 | @Setter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public final class GuardianArmor extends OkaeriConfig { 15 | private ItemStack helmet; 16 | private ItemStack chestplate; 17 | private ItemStack leggings; 18 | private ItemStack boots; 19 | private ItemStack weapon; 20 | } 21 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/base/game/player/PlayerStatus.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.base.game.player; 2 | 3 | import lombok.Getter; 4 | import lombok.RequiredArgsConstructor; 5 | 6 | @Getter 7 | @RequiredArgsConstructor 8 | public enum PlayerStatus { 9 | /** 10 | * Used when player still in dragon's world 11 | */ 12 | ACTIVE, 13 | /** 14 | * Used when a player is not in dragon's world anymore 15 | */ 16 | INACTIVE 17 | } 18 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/base/game/reward/DragonRewardImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.base.game.reward; 2 | 3 | import com.qualityplus.dragon.api.game.reward.DragonReward; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | 8 | import java.util.List; 9 | 10 | @AllArgsConstructor 11 | @Builder 12 | public final class DragonRewardImpl extends OkaeriConfig implements DragonReward { 13 | private final int damageDone; 14 | private final List commands; 15 | 16 | @Override 17 | public int getDamageDone() { 18 | return damageDone; 19 | } 20 | 21 | @Override 22 | public List getCommands() { 23 | return commands; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/base/game/structure/DragonSpawnImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.base.game.structure; 2 | 3 | import com.qualityplus.dragon.api.game.structure.type.DragonSpawn; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | import org.bukkit.Location; 8 | import org.bukkit.World; 9 | 10 | @Getter 11 | @AllArgsConstructor 12 | public final class DragonSpawnImpl extends OkaeriConfig implements DragonSpawn { 13 | private Location location; 14 | 15 | @Override 16 | public void removeStructure() { 17 | /** 18 | * TODO 19 | */ 20 | } 21 | 22 | @Override 23 | public World getWorld() { 24 | return location.getWorld(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/gui/altars/DragonAltarsGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.gui.altars; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.Item; 5 | import com.qualityplus.assistant.inventory.SimpleGUI; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Getter; 9 | import lombok.NoArgsConstructor; 10 | 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @Getter 14 | public final class DragonAltarsGUIConfig extends OkaeriConfig implements SimpleGUI { 15 | private CommonGUI commonGUI; 16 | private Item altarItem; 17 | private Item previousPage; 18 | private Item nextPage; 19 | private Item backToMainMenu; 20 | } 21 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/gui/confirm/ConfirmGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.gui.confirm; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.Item; 5 | import com.qualityplus.assistant.inventory.SimpleGUI; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Getter; 9 | import lombok.NoArgsConstructor; 10 | 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @Getter 14 | public final class ConfirmGUIConfig extends OkaeriConfig implements SimpleGUI { 15 | private CommonGUI commonGUI; 16 | private Item confirmItem; 17 | private Item cancelItem; 18 | } 19 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/gui/crystals/DragonCrystalsGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.gui.crystals; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.Item; 5 | import com.qualityplus.assistant.inventory.SimpleGUI; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Getter; 9 | import lombok.NoArgsConstructor; 10 | 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @Getter 14 | public final class DragonCrystalsGUIConfig extends OkaeriConfig implements SimpleGUI { 15 | private CommonGUI commonGUI; 16 | private Item crystalItem; 17 | private Item previousPage; 18 | private Item nextPage; 19 | private Item backToMainMenu; 20 | } 21 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/gui/dragons/DragonsGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.gui.dragons; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.Item; 5 | import com.qualityplus.assistant.inventory.SimpleGUI; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Getter; 9 | import lombok.NoArgsConstructor; 10 | 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @Getter 14 | public final class DragonsGUIConfig extends OkaeriConfig implements SimpleGUI { 15 | private CommonGUI commonGUI; 16 | private Item dragonItem; 17 | private Item previousPage; 18 | private Item nextPage; 19 | private Item backToMainMenu; 20 | } 21 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/gui/equipment/GuardianEquipmentGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.gui.equipment; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.SimpleGUI; 5 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Getter; 8 | import lombok.NoArgsConstructor; 9 | 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @Getter 13 | public final class GuardianEquipmentGUIConfig extends OkaeriConfig implements SimpleGUI { 14 | private CommonGUI commonGUI; 15 | } 16 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/gui/guardians/DragonGuardiansGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.gui.guardians; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.Item; 5 | import com.qualityplus.assistant.inventory.SimpleGUI; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Getter; 9 | import lombok.NoArgsConstructor; 10 | 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @Getter 14 | public final class DragonGuardiansGUIConfig extends OkaeriConfig implements SimpleGUI { 15 | private CommonGUI commonGUI; 16 | private Item guardianItem; 17 | private Item previousPageItem; 18 | private Item nextPageItem; 19 | private Item backToMainMenu; 20 | } 21 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/gui/guardianspawns/GuardianSpawnsGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.gui.guardianspawns; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.Item; 5 | import com.qualityplus.assistant.inventory.SimpleGUI; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Getter; 9 | import lombok.NoArgsConstructor; 10 | 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @Getter 14 | public final class GuardianSpawnsGUIConfig extends OkaeriConfig implements SimpleGUI { 15 | private CommonGUI commonGUI; 16 | private Item guardianSpawnItem; 17 | private Item previousPage; 18 | private Item nextPage; 19 | private Item backToMainMenu; 20 | } 21 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/listener/crystals/CrystalListener.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.listener.crystals; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 4 | import org.bukkit.event.Listener; 5 | 6 | @Component 7 | public final class CrystalListener implements Listener { 8 | } 9 | -------------------------------------------------------------------------------- /TheDragon/src/main/java/com/qualityplus/dragon/persistance/data/UserData.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.dragon.persistance.data; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | import java.util.UUID; 8 | 9 | @Data @EqualsAndHashCode(callSuper = true) 10 | public final class UserData extends Document { 11 | private UUID uuid; 12 | private String name; 13 | private double record; 14 | } 15 | -------------------------------------------------------------------------------- /TheDragon/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheDragon 2 | description: The Dragon Plugin 3 | main: com.qualityplus.dragon.TheDragon 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | commands: 10 | thedragon: 11 | aliases: ["dragon", "drg"] 12 | description: TheDragon's main command -------------------------------------------------------------------------------- /TheEnchanting/TheEnchanting-NMS/TheEnchanting-Legacy/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT' 3 | compileOnly project(':TheEnchanting:TheEnchanting-NMS') 4 | } -------------------------------------------------------------------------------- /TheEnchanting/TheEnchanting-NMS/TheEnchanting-Newest-1_20/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.21.1-R0.1-SNAPSHOT' 3 | compileOnly project(':TheEnchanting:TheEnchanting-NMS') 4 | } 5 | -------------------------------------------------------------------------------- /TheEnchanting/TheEnchanting-NMS/TheEnchanting-Newest/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 3 | compileOnly project(':TheEnchanting:TheEnchanting-NMS') 4 | } 5 | -------------------------------------------------------------------------------- /TheEnchanting/TheEnchanting-NMS/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT' 3 | } -------------------------------------------------------------------------------- /TheEnchanting/TheEnchanting-NMS/src/main/java/com/qualityplus/enchanting/api/enchantment/ProviderType.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api.enchantment; 2 | 3 | public enum ProviderType { 4 | ECO_ENCHANT, 5 | ADVANCED_ENCHANT, 6 | VANILLA_ENCHANT; 7 | } 8 | -------------------------------------------------------------------------------- /TheEnchanting/TheEnchanting-NMS/src/main/java/com/qualityplus/enchanting/api/enchantment/VanillaEnchantment.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api.enchantment; 2 | 3 | import org.bukkit.enchantments.Enchantment; 4 | 5 | public interface VanillaEnchantment { 6 | Enchantment getEnchantment(); 7 | } 8 | -------------------------------------------------------------------------------- /TheEnchanting/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | project(':TheEnchanting').subprojects.forEach(project -> implementation project) 3 | project(':TheEnchanting:TheEnchanting-NMS:TheEnchanting-Legacy') 4 | project(':TheEnchanting:TheEnchanting-NMS:TheEnchanting-Newest') 5 | project(':TheEnchanting:TheEnchanting-NMS:TheEnchanting-Newest-1_20') 6 | compileOnly 'org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT' 7 | compileOnly fileTree(dir: 'libs', include: ['*.jar']) 8 | } -------------------------------------------------------------------------------- /TheEnchanting/libs/core-plugin-9.0.0-b3-all.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r3back/the-core/088b0f0dbc9f32a90809bae549e9d45817aef6a2/TheEnchanting/libs/core-plugin-9.0.0-b3-all.jar -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/api/TheEnchantingAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api; 2 | 3 | import com.qualityplus.enchanting.api.enchantment.ICoreEnchantment; 4 | import com.qualityplus.enchanting.api.session.EnchantmentSession; 5 | import org.bukkit.inventory.ItemStack; 6 | 7 | import java.util.Map; 8 | import java.util.Optional; 9 | 10 | public interface TheEnchantingAPI { 11 | ItemStack addEnchantment(ItemStack itemStack, EnchantmentSession session); 12 | 13 | ItemStack removeEnchantment(ItemStack itemStack, EnchantmentSession session); 14 | 15 | Map getEnchantments(ItemStack itemStack); 16 | 17 | Optional getIncompatibility(ItemStack itemStack, ICoreEnchantment enchantment); 18 | } 19 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/api/box/Box.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api.box; 2 | 3 | import com.qualityplus.enchanting.api.config.ConfigFiles; 4 | import com.qualityplus.enchanting.base.config.Commands; 5 | import com.qualityplus.enchanting.base.config.Config; 6 | import com.qualityplus.enchanting.base.config.Inventories; 7 | import com.qualityplus.enchanting.base.config.Messages; 8 | import org.bukkit.plugin.Plugin; 9 | 10 | public interface Box { 11 | ConfigFiles files(); 12 | Plugin plugin(); 13 | } 14 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/api/chain/EnchantmentChain.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api.chain; 2 | 3 | import com.qualityplus.enchanting.api.session.EnchantmentSession; 4 | import org.bukkit.inventory.ItemStack; 5 | 6 | public interface EnchantmentChain { 7 | ItemStack addEnchantment(ItemStack itemStack, EnchantmentSession session); 8 | 9 | ItemStack removeEnchantment(ItemStack itemStack, EnchantmentSession session); 10 | } 11 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | public interface ConfigFiles extends ConfigReloader { 6 | C config(); 7 | I inventories(); 8 | M messages(); 9 | CMD commands(); 10 | } 11 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/api/event/EnchantingEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import org.bukkit.entity.Player; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public abstract class EnchantingEvent extends PlayerAssistantEvent { 8 | public EnchantingEvent(@NotNull Player who) { 9 | super(who); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/api/handler/EnchantmentController.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api.handler; 2 | 3 | import com.qualityplus.enchanting.api.enchantment.ICoreEnchantment; 4 | 5 | public interface EnchantmentController { 6 | T addEnchantment(T itemStack, ICoreEnchantment enchantment, int level); 7 | T removeEnchantment(T itemStack, ICoreEnchantment enchantment); 8 | } 9 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/api/processor/EnchantmentProcessor.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api.processor; 2 | 3 | import com.qualityplus.enchanting.api.session.EnchantmentSession; 4 | import org.bukkit.inventory.ItemStack; 5 | 6 | public interface EnchantmentProcessor { 7 | ItemStack addEnchantment(ItemStack itemStack, EnchantmentSession session); 8 | 9 | ItemStack removeEnchantment(ItemStack itemStack, EnchantmentSession session); 10 | } 11 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/api/provider/EnchantmentProvider.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api.provider; 2 | 3 | import com.qualityplus.enchanting.api.enchantment.ICoreEnchantment; 4 | 5 | import java.util.List; 6 | 7 | public interface EnchantmentProvider { 8 | List getEnchantments(); 9 | } 10 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/api/session/EnchantmentSession.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api.session; 2 | 3 | import com.qualityplus.enchanting.api.enchantment.ICoreEnchantment; 4 | 5 | public interface EnchantmentSession { 6 | ICoreEnchantment getEnchantment(); 7 | 8 | int getLevel(); 9 | } 10 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/api/settings/EcoWarning.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.api.settings; 2 | 3 | public interface EcoWarning { 4 | void sendWarning(); 5 | } 6 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/base/event/TheEnchantingEnchantEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.base.event; 2 | 3 | import com.qualityplus.enchanting.api.event.EnchantingEvent; 4 | import com.qualityplus.enchanting.api.session.EnchantmentSession; 5 | import lombok.Getter; 6 | import org.bukkit.entity.Player; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | @Getter 10 | public final class TheEnchantingEnchantEvent extends EnchantingEvent { 11 | private final EnchantmentSession session; 12 | 13 | public TheEnchantingEnchantEvent(@NotNull Player who, EnchantmentSession session) { 14 | super(who); 15 | 16 | this.session = session; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/base/gui/enchantmain/handler/ClickHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.base.gui.enchantmain.handler; 2 | 3 | import org.bukkit.event.inventory.InventoryClickEvent; 4 | 5 | public interface ClickHandler { 6 | void handle(InventoryClickEvent event); 7 | 8 | void handleOutSide(InventoryClickEvent event); 9 | } 10 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/base/provider/VanillaEnchantmentProvider.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.base.provider; 2 | 3 | import com.qualityplus.enchanting.api.enchantment.ICoreEnchantment; 4 | import com.qualityplus.enchanting.api.provider.EnchantmentProvider; 5 | 6 | import java.util.Collections; 7 | import java.util.List; 8 | 9 | public final class VanillaEnchantmentProvider implements EnchantmentProvider { 10 | @Override 11 | public List getEnchantments() { 12 | return Collections.emptyList(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/base/session/EnchantmentSessionImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.base.session; 2 | 3 | import com.qualityplus.enchanting.api.enchantment.ICoreEnchantment; 4 | import com.qualityplus.enchanting.api.session.EnchantmentSession; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | 8 | @Getter 9 | @AllArgsConstructor 10 | public final class EnchantmentSessionImpl implements EnchantmentSession { 11 | private final ICoreEnchantment enchantment; 12 | private final int level; 13 | } 14 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/java/com/qualityplus/enchanting/util/EnchantingAddonsUtil.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.enchanting.util; 2 | 3 | import com.qualityplus.assistant.TheAssistantPlugin; 4 | import lombok.experimental.UtilityClass; 5 | 6 | @UtilityClass 7 | public class EnchantingAddonsUtil { 8 | public static final Boolean ECO_ENCHANTMENTS; 9 | public static final Boolean ADVANCED_ENCHANTMENTS; 10 | 11 | static { 12 | ECO_ENCHANTMENTS = TheAssistantPlugin.getAPI().getDependencyResolver().isPlugin("EcoEnchants"); 13 | ADVANCED_ENCHANTMENTS = TheAssistantPlugin.getAPI().getDependencyResolver().isPlugin("AdvancedEnchantments"); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /TheEnchanting/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheEnchanting 2 | description: The Enchanting Plugin 3 | main: com.qualityplus.enchanting.TheEnchanting 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | softdepend: [EcoEnchants, AdvancedEnchantments] 10 | commands: 11 | theenchanting: 12 | aliases: ["enchanting", "theench"] 13 | description: Enchanting's main command -------------------------------------------------------------------------------- /TheMinions/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 3 | compileOnly project(':TheCrafting') 4 | compileOnly fileTree(dir: 'libs', include: ['*.jar']) 5 | } -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | public interface ConfigFiles extends ConfigReloader { 6 | C config(); 7 | I inventories(); 8 | M messages(); 9 | CMD commands(); 10 | S skins(); 11 | AS getAutoSell(); 12 | FU fuelUpgrades(); 13 | U upgrades(); 14 | } 15 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/api/handler/AnimationHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.api.handler; 2 | 3 | import com.qualityplus.minions.base.minions.entity.mob.MinionMobEntity; 4 | import org.bukkit.block.Block; 5 | import org.bukkit.entity.ArmorStand; 6 | import org.bukkit.entity.Entity; 7 | 8 | import java.util.concurrent.CompletableFuture; 9 | 10 | public interface AnimationHandler { 11 | CompletableFuture getBlockToRotate(ArmorStandHandler armorStand); 12 | 13 | CompletableFuture getEntityToRotate(ArmorStandHandler armorStand); 14 | } 15 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/api/handler/FuelHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.api.handler; 2 | 3 | public interface FuelHandler { 4 | void removeFuel(); 5 | } 6 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/api/handler/LayoutHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.api.handler; 2 | 3 | 4 | public interface LayoutHandler { 5 | Boolean hasInvalidLayout(ArmorStandHandler armorStand); 6 | } 7 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/api/handler/SellHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.api.handler; 2 | 3 | public interface SellHandler { 4 | void sellIfItsPossible(); 5 | } 6 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/api/handler/StorageHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.api.handler; 2 | 3 | import com.qualityplus.minions.base.minions.entity.MinionStorageState; 4 | 5 | import java.util.concurrent.CompletableFuture; 6 | 7 | public interface StorageHandler { 8 | MinionStorageState getMinionStorageState(); 9 | } 10 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/api/minion/category/MinionCategory.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.api.minion.category; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.NoArgsConstructor; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @EqualsAndHashCode(callSuper = true) 13 | public final class MinionCategory extends OkaeriConfig { 14 | private String id; 15 | private String displayName; 16 | } 17 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/api/recipe/Recipe.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.api.recipe; 2 | 3 | import org.bukkit.inventory.ItemStack; 4 | 5 | import java.util.Map; 6 | 7 | public interface Recipe { 8 | Map getIngredients(); 9 | 10 | ItemStack getResult(); 11 | } 12 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/api/recipe/provider/RecipeProvider.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.api.recipe.provider; 2 | 3 | import com.qualityplus.minions.api.recipe.Recipe; 4 | 5 | public interface RecipeProvider { 6 | Recipe getRecipe(String id); 7 | } 8 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/api/service/MinionsService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.api.service; 2 | 3 | import com.qualityplus.assistant.api.service.DataManagementService; 4 | import com.qualityplus.minions.persistance.data.MinionData; 5 | 6 | import java.util.List; 7 | import java.util.UUID; 8 | 9 | public interface MinionsService extends DataManagementService { 10 | List getAllKeys(); 11 | } 12 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/api/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.api.service; 2 | 3 | import com.qualityplus.assistant.api.service.DataManagementService; 4 | import com.qualityplus.minions.persistance.data.UserData; 5 | 6 | public interface UserService extends DataManagementService { 7 | } 8 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/event/MinionCreateEvent.java: -------------------------------------------------------------------------------- 1 | 2 | package com.qualityplus.minions.base.event; 3 | 4 | import com.qualityplus.assistant.api.event.AssistantEvent; 5 | import com.qualityplus.minions.persistance.data.MinionData; 6 | import lombok.Getter; 7 | 8 | @Getter 9 | public final class MinionCreateEvent extends AssistantEvent { 10 | private final MinionData minionData; 11 | 12 | public MinionCreateEvent(MinionData petData) { 13 | this.minionData = petData; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/event/MinionInteractEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import com.qualityplus.minions.api.minion.MinionEntity; 5 | import lombok.Getter; 6 | import org.bukkit.entity.Player; 7 | 8 | @Getter 9 | public final class MinionInteractEvent extends PlayerAssistantEvent { 10 | private final MinionEntity minionEntity; 11 | 12 | public MinionInteractEvent(Player player, MinionEntity minionEntity) { 13 | super(player); 14 | this.minionEntity = minionEntity; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/gui/changeitem/ChangeItem.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.gui.changeitem; 2 | 3 | public enum ChangeItem { 4 | DROP_ITEM, 5 | UPGRADE_ITEM_TO_GIVE, 6 | UPGRADE_ITEM_REQUIRED_ITEM 7 | } 8 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/gui/changeitem/ChangeItemRequest.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.gui.changeitem; 2 | 3 | import com.qualityplus.minions.base.minions.minion.Minion; 4 | import com.qualityplus.minions.base.minions.minion.upgrade.MinionUpgrade; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | 9 | @Data 10 | @Builder 11 | @AllArgsConstructor 12 | public class ChangeItemRequest { 13 | private final MinionUpgrade minionUpgrade; 14 | private final ChangeItem changeItem; 15 | private final Minion minion; 16 | 17 | public boolean is(ChangeItem changeItem) { 18 | return this.changeItem.equals(changeItem); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/gui/main/handler/ClickHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.gui.main.handler; 2 | 3 | import com.qualityplus.minions.api.box.Box; 4 | import com.qualityplus.minions.api.minion.MinionEntity; 5 | import org.bukkit.event.inventory.InventoryClickEvent; 6 | 7 | public interface ClickHandler { 8 | void handle(InventoryClickEvent event, MinionEntity minionEntity, Box box); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/gui/main/handler/ClickHandlers.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.gui.main.handler; 2 | 3 | public interface ClickHandlers { 4 | } 5 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/gui/main/handler/click/UpgradeSlot.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.gui.main.handler.click; 2 | 3 | public enum UpgradeSlot { 4 | FIRST_SLOT, 5 | SECOND_SLOT, 6 | } 7 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/gui/main/setup/ItemSetup.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.gui.main.setup; 2 | 3 | import com.qualityplus.minions.api.box.Box; 4 | import com.qualityplus.minions.api.minion.MinionEntity; 5 | import com.qualityplus.minions.base.gui.main.MainMinionGUIConfig; 6 | import org.bukkit.inventory.Inventory; 7 | 8 | public interface ItemSetup { 9 | void setItem(Inventory inventory, Box box, MainMinionGUIConfig config, MinionEntity minionEntity); 10 | } 11 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/gui/main/setup/PlaceholdersSetup.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.gui.main.setup; 2 | 3 | import com.qualityplus.assistant.api.util.IPlaceholder; 4 | import com.qualityplus.minions.api.box.Box; 5 | import com.qualityplus.minions.api.minion.MinionEntity; 6 | 7 | import java.util.List; 8 | 9 | public interface PlaceholdersSetup { 10 | List getPlaceholders(Box box, MinionEntity minionEntity); 11 | } 12 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/MinionEntityOptions.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.*; 5 | 6 | @Data 7 | @Builder 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @EqualsAndHashCode(callSuper = true) 11 | public final class MinionEntityOptions extends OkaeriConfig { 12 | private String displayName; 13 | private String particle; 14 | } 15 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/MinionStorageState.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity; 2 | 3 | import com.qualityplus.minions.base.gui.main.handler.click.UpgradeSlot; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import org.bukkit.inventory.ItemStack; 8 | 9 | import java.util.Map; 10 | 11 | @Data 12 | @Builder 13 | @AllArgsConstructor 14 | public final class MinionStorageState { 15 | private final Map toRemove; 16 | private final boolean hasFullStorage; 17 | private final ItemStack[] toAdd; 18 | private final UpgradeSlot slot; 19 | } 20 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/animation/FinishAnimation.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity.animation; 2 | 3 | public interface FinishAnimation { 4 | void finished(); 5 | } 6 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/getter/DataGetter.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity.getter; 2 | 3 | import com.qualityplus.minions.TheMinions; 4 | import com.qualityplus.minions.persistance.data.MinionData; 5 | 6 | import java.util.Optional; 7 | 8 | public interface DataGetter extends MinionUUIDGetter { 9 | default Optional getData(){ 10 | return TheMinions.getApi().getMinionsService().getData(getMinionUniqueId()); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/getter/LevelGetter.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity.getter; 2 | 3 | import com.qualityplus.minions.TheMinions; 4 | import com.qualityplus.minions.persistance.data.MinionData; 5 | 6 | import java.util.Optional; 7 | 8 | public interface LevelGetter extends MinionUUIDGetter{ 9 | 10 | default int getLevel(){ 11 | Optional petData = TheMinions.getApi().getMinionsService().getData(getMinionUniqueId()); 12 | 13 | return petData.map(MinionData::getLevel).orElse(1); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/getter/MinionUUIDGetter.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity.getter; 2 | 3 | import java.util.UUID; 4 | 5 | public interface MinionUUIDGetter { 6 | UUID getMinionUniqueId(); 7 | } 8 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/handler/MinionHandlers.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity.handler; 2 | 3 | import com.qualityplus.minions.api.handler.*; 4 | 5 | public interface MinionHandlers { 6 | StorageHandler getStorageHandler(); 7 | AnimationHandler getAnimationHandler(); 8 | LayoutHandler getLayoutHandler(); 9 | SellHandler getSellHandler(); 10 | FuelHandler getFuelHandler(); 11 | } 12 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/message/RandomMessage.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity.message; 2 | 3 | import com.qualityplus.assistant.api.util.Randomable; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.*; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @EqualsAndHashCode(callSuper = true) 13 | public class RandomMessage extends OkaeriConfig implements Randomable { 14 | private List message; 15 | private double probability; 16 | } 17 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/mob/MinionMobEntity.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity.mob; 2 | 3 | import lombok.*; 4 | import org.bukkit.Location; 5 | import org.bukkit.entity.Entity; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | @Builder 10 | public final class MinionMobEntity { 11 | private final Location location; 12 | private final Entity entity; 13 | } 14 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/scheduler/MinionTickService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity.scheduler; 2 | 3 | import com.qualityplus.minions.api.minion.MinionEntity; 4 | 5 | import java.util.Map; 6 | import java.util.UUID; 7 | 8 | public interface MinionTickService { 9 | void tick(Map.Entry entry); 10 | } -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/scheduler/MinionTickServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity.scheduler; 2 | 3 | import com.qualityplus.minions.api.minion.MinionEntity; 4 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 5 | 6 | import java.util.Map; 7 | import java.util.UUID; 8 | 9 | @Component 10 | public final class MinionTickServiceImpl implements MinionTickService { 11 | @Override 12 | public void tick(Map.Entry entry){ 13 | entry.getValue().tick(); 14 | } 15 | } -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/entity/status/MinionStatus.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.entity.status; 2 | 3 | public enum MinionStatus{ 4 | IDEAL_LAYOUT, 5 | INVALID_LAYOUT, 6 | STORAGE_FULL 7 | } -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/minion/MinionType.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.minion; 2 | 3 | public enum MinionType { 4 | BLOCK_BREAK, 5 | CROP_BREAK, 6 | MOB_KILLER 7 | } 8 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/minion/egg/MinionEgg.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.minion.egg; 2 | 3 | import com.qualityplus.assistant.util.StringUtils; 4 | import com.qualityplus.assistant.util.placeholder.Placeholder; 5 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 6 | import lombok.*; 7 | 8 | @Data 9 | @Builder 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @EqualsAndHashCode(callSuper = true) 13 | public final class MinionEgg extends OkaeriConfig { 14 | private String displayName; 15 | private String eggDisplayName; 16 | 17 | public String getEggDisplayName(){ 18 | return StringUtils.processMulti(eggDisplayName, new Placeholder("minion_egg_displayname", displayName).alone()); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/minion/layout/LayoutGUISettings.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.minion.layout; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.*; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | @Builder 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @EqualsAndHashCode(callSuper = true) 13 | public final class LayoutGUISettings extends OkaeriConfig { 14 | private List layoutItems; 15 | private int minionSlot; 16 | } 17 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/minion/layout/LayoutItem.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.minion.layout; 2 | 3 | import com.qualityplus.assistant.inventory.Item; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.*; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | @Builder 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @EqualsAndHashCode(callSuper = true) 14 | public final class LayoutItem extends OkaeriConfig { 15 | private Item item; 16 | private List slots; 17 | } 18 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/minion/layout/LayoutType.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.minion.layout; 2 | 3 | public enum LayoutType { 4 | THREE_X_THREE,TWO_X_TWO 5 | } 6 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/minion/level/MatRequirement.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.minion.level; 2 | 3 | import com.qualityplus.assistant.lib.com.cryptomorin.xseries.XMaterial; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | @Data 11 | @Builder 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public final class MatRequirement extends OkaeriConfig { 15 | private XMaterial requiredMaterial; 16 | private int requiredMaterialAmount; 17 | } 18 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/minion/level/MinionLevel.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.minion.level; 2 | 3 | import com.qualityplus.assistant.util.time.HumanTime; 4 | import com.qualityplus.minions.base.minions.minion.recipes.MinionRecipeConfig; 5 | import com.qualityplus.minions.base.minions.minion.skin.MinionSkin; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import lombok.*; 8 | 9 | @Data 10 | @Builder 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @EqualsAndHashCode(callSuper = true) 14 | public final class MinionLevel extends OkaeriConfig { 15 | private MinionRecipeConfig minionRecipe; 16 | private MatRequirement matRequirement; 17 | private HumanTime executeActionsTime; 18 | private String minionSkin; 19 | private int maxStorage; 20 | } 21 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/minion/mob/MinionMob.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.minion.mob; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.*; 5 | import org.bukkit.entity.EntityType; 6 | 7 | @Data 8 | @Builder 9 | @AllArgsConstructor 10 | @NoArgsConstructor 11 | @EqualsAndHashCode(callSuper = true) 12 | public final class MinionMob extends OkaeriConfig { 13 | private String displayName; 14 | private EntityType entityType; 15 | private boolean isFromMythicMobs; 16 | private String id; 17 | private int mythicMobsLevel; 18 | } 19 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/minion/recipes/MinionRecipeConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.minion.recipes; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.*; 5 | 6 | @Data 7 | @Builder 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @EqualsAndHashCode(callSuper = true) 11 | public final class MinionRecipeConfig extends OkaeriConfig { 12 | private boolean enabled; 13 | private String recipeId; 14 | } 15 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/minions/minion/update/item/UpgradeSettings.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.minions.minion.update.item; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.*; 5 | 6 | @Data 7 | @Builder 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @EqualsAndHashCode(callSuper = true) 11 | public final class UpgradeSettings extends OkaeriConfig { 12 | private double sellPrice; 13 | private ItemSettings itemSettings; 14 | } 15 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/recipe/MinionRecipe.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.recipe; 2 | 3 | import com.qualityplus.minions.api.recipe.Recipe; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import org.bukkit.inventory.ItemStack; 7 | 8 | import java.util.Map; 9 | 10 | @Data 11 | @AllArgsConstructor 12 | public final class MinionRecipe implements Recipe { 13 | private final Map ingredients; 14 | private final ItemStack result; 15 | } 16 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/recipe/provider/EmptyRecipeProviderImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.recipe.provider; 2 | 3 | import com.qualityplus.minions.api.recipe.Recipe; 4 | import com.qualityplus.minions.api.recipe.provider.RecipeProvider; 5 | 6 | public final class EmptyRecipeProviderImpl implements RecipeProvider { 7 | @Override 8 | public Recipe getRecipe(String id) { 9 | return null; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/base/recipe/provider/TheCraftingRecipeProvider.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.base.recipe.provider; 2 | 3 | import com.qualityplus.crafting.api.recipes.Recipes; 4 | import com.qualityplus.crafting.base.recipes.CustomRecipe; 5 | import com.qualityplus.minions.api.recipe.Recipe; 6 | import com.qualityplus.minions.api.recipe.provider.RecipeProvider; 7 | import com.qualityplus.minions.base.recipe.MinionRecipe; 8 | 9 | public final class TheCraftingRecipeProvider implements RecipeProvider { 10 | @Override 11 | public Recipe getRecipe(String id) { 12 | CustomRecipe customRecipe = Recipes.getByID(id); 13 | 14 | if(customRecipe == null) return null; 15 | 16 | return new MinionRecipe(customRecipe.getIngredients(), customRecipe.getResult()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/listener/MinionAnimationListener.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.listener; 2 | 3 | import com.qualityplus.minions.base.event.MinionBlockBreakEvent; 4 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 5 | import org.bukkit.event.EventHandler; 6 | import org.bukkit.event.Listener; 7 | 8 | @Component 9 | public final class MinionAnimationListener implements Listener { 10 | @EventHandler 11 | public void minionBlockBreak(MinionBlockBreakEvent event){ 12 | 13 | 14 | 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/persistance/data/upgrade/AutomatedShippingEntity.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.persistance.data.upgrade; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 4 | import lombok.*; 5 | 6 | @Data 7 | @Builder 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @EqualsAndHashCode(callSuper = true) 11 | public final class AutomatedShippingEntity extends Document { 12 | private String id; 13 | private long soldItems; 14 | private double heldCoins; 15 | 16 | public void addSoldItems(long soldItems){ 17 | this.soldItems+=soldItems; 18 | } 19 | 20 | public void addHeldCoins(double heldCoins){ 21 | this.heldCoins+=heldCoins; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/persistance/data/upgrade/FuelEntity.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.persistance.data.upgrade; 2 | 3 | import com.qualityplus.assistant.util.time.Markable; 4 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 5 | import lombok.*; 6 | 7 | @Data 8 | @Builder 9 | @AllArgsConstructor 10 | @NoArgsConstructor 11 | @EqualsAndHashCode(callSuper = true) 12 | public final class FuelEntity extends Document { 13 | private String id; 14 | private Markable markable; 15 | } 16 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/persistance/data/upgrade/SkinEntity.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.persistance.data.upgrade; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 4 | import lombok.*; 5 | 6 | @Data 7 | @Builder 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @EqualsAndHashCode(callSuper = true) 11 | public final class SkinEntity extends Document { 12 | private String id; 13 | } 14 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/persistance/data/upgrade/UpgradeEntity.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.persistance.data.upgrade; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 4 | import lombok.*; 5 | 6 | @Data 7 | @Builder 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @EqualsAndHashCode(callSuper = true) 11 | public final class UpgradeEntity extends Document { 12 | private String id; 13 | } 14 | -------------------------------------------------------------------------------- /TheMinions/src/main/java/com/qualityplus/minions/util/MinionPlayerUtil.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.minions.util; 2 | 3 | import lombok.experimental.UtilityClass; 4 | import org.bukkit.entity.Player; 5 | 6 | @UtilityClass 7 | public class MinionPlayerUtil { 8 | public static int getMinionsAmount(Player player){ 9 | int minions = 1; 10 | 11 | for(int i = 1; i<15; i+=1) 12 | if(player.hasPermission("theminions.place_amount." + i)) minions = Math.max(minions, i); 13 | 14 | return minions; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /TheMinions/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheMinions 2 | description: The Minions Plugin 3 | main: com.qualityplus.minions.TheMinions 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | softdepend: [TheCrafting] 10 | commands: 11 | theminions: 12 | aliases: [minions] 13 | description: Minions's main command -------------------------------------------------------------------------------- /ThePets/build.gradle: -------------------------------------------------------------------------------- 1 | repositories { 2 | maven { 3 | url 'https://mvn.lumine.io/repository/maven-public/' 4 | } 5 | //TODO check if this can be removed 6 | maven { 7 | url 'https://jitpack.io' 8 | } 9 | maven { 10 | url = 'https://repo.papermc.io/repository/maven-public/' 11 | } 12 | } 13 | 14 | dependencies { 15 | compileOnly project(':TheSkills') 16 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 17 | compileOnly 'com.github.Archy-X:AureliumSkills:Beta1.3.11' 18 | compileOnly("io.papermc.paper:paper-api:1.21.3-R0.1-SNAPSHOT") 19 | 20 | compileOnly fileTree(dir: 'libs', include: ['*.jar']) 21 | } -------------------------------------------------------------------------------- /ThePets/libs/api-R3.1.8.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r3back/the-core/088b0f0dbc9f32a90809bae549e9d45817aef6a2/ThePets/libs/api-R3.1.8.jar -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/api/ThePetsAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.api; 2 | 3 | import com.qualityplus.pets.api.service.PetService; 4 | import com.qualityplus.pets.api.service.UserPetService; 5 | import com.qualityplus.pets.api.skills.DependencyHandler; 6 | 7 | public interface ThePetsAPI { 8 | DependencyHandler getDependencyHandler(); 9 | UserPetService getUsersService(); 10 | PetService getPetsService(); 11 | } 12 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/api/box/Box.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.api.box; 2 | 3 | import com.qualityplus.pets.api.config.ConfigFiles; 4 | import com.qualityplus.pets.api.service.PetService; 5 | import com.qualityplus.pets.api.service.UserPetService; 6 | import com.qualityplus.pets.base.config.*; 7 | import org.bukkit.plugin.Plugin; 8 | 9 | /** 10 | * Box Inteface 11 | */ 12 | public interface Box { 13 | ConfigFiles files(); 14 | UserPetService service(); 15 | PetService petService(); 16 | Plugin plugin(); 17 | } 18 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | /** 6 | * Config files interface 7 | * 8 | * @param Config file 9 | * @param Inventories file 10 | * @param Messages file 11 | * @param Commands file 12 | * @param Categories file 13 | */ 14 | public interface ConfigFiles extends ConfigReloader { 15 | C config(); 16 | I inventories(); 17 | M messages(); 18 | CMD commands(); 19 | CAT categories(); 20 | } 21 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/api/pet/category/PetCategory.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.api.pet.category; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.NoArgsConstructor; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @EqualsAndHashCode(callSuper = true) 13 | public final class PetCategory extends OkaeriConfig { 14 | private String id; 15 | private String displayName; 16 | } 17 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/api/pet/entity/PetEntity.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.api.pet.entity; 2 | 3 | import org.bukkit.Location; 4 | 5 | import java.util.UUID; 6 | 7 | public interface PetEntity { 8 | UUID getOwner(); 9 | void followOwner(); 10 | void spellParticle(); 11 | UUID getPetUniqueId(); 12 | void spawn(); 13 | void deSpawn(DeSpawnReason reason); 14 | void update(); 15 | void prepareToLevelUp(); 16 | 17 | Location getSpawn(); 18 | 19 | void load(); 20 | void unload(); 21 | 22 | 23 | public static enum DeSpawnReason{ 24 | SERVER_TURNED_OFF, 25 | PLAYER_DE_SPAWN_PET 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/api/service/PetFollowService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.api.service; 2 | 3 | import com.qualityplus.pets.api.pet.entity.PetEntity; 4 | 5 | import java.util.Map; 6 | import java.util.UUID; 7 | 8 | public interface PetFollowService { 9 | void follow(Map.Entry entry); 10 | } 11 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/api/service/PetParticleService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.api.service; 2 | 3 | import com.qualityplus.pets.api.pet.entity.PetEntity; 4 | 5 | import java.util.Map; 6 | import java.util.UUID; 7 | 8 | public interface PetParticleService { 9 | void spellParticle(Map.Entry entry); 10 | } 11 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/api/service/PetService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.api.service; 2 | 3 | import com.qualityplus.assistant.api.service.DataManagementService; 4 | import com.qualityplus.pets.persistance.data.PetData; 5 | 6 | public interface PetService extends DataManagementService { 7 | void addXp(PetData petData, double xp); 8 | 9 | void saveAllData(); 10 | 11 | int loadedAmount(); 12 | } 13 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/api/service/UserPetService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.api.service; 2 | 3 | import com.qualityplus.assistant.api.service.DataManagementService; 4 | import com.qualityplus.pets.api.pet.entity.PetEntity; 5 | import com.qualityplus.pets.base.pet.Pet; 6 | import com.qualityplus.pets.persistance.data.UserData; 7 | 8 | import java.util.Optional; 9 | import java.util.Set; 10 | import java.util.UUID; 11 | 12 | public interface UserPetService extends DataManagementService { 13 | Set getAllKeys(); 14 | 15 | Optional getSpawnedPet(UUID uuid); 16 | 17 | Optional getSpawnedPetEntity(UUID uuid); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/api/skills/DependencyHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.api.skills; 2 | 3 | public interface DependencyHandler { 4 | SkillDependency getSkills(); 5 | } 6 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/api/skills/SkillDependency.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.api.skills; 2 | 3 | import org.bukkit.entity.Player; 4 | 5 | public interface SkillDependency { 6 | void addStat(Player player, String stat, double amount); 7 | 8 | void removeStat(Player player, String stat, double amount); 9 | } 10 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/ThePetsAPIImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.injector.annotation.Inject; 4 | import com.qualityplus.pets.api.ThePetsAPI; 5 | import com.qualityplus.pets.api.service.PetService; 6 | import com.qualityplus.pets.api.service.UserPetService; 7 | import com.qualityplus.pets.api.skills.DependencyHandler; 8 | 9 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 10 | import lombok.Getter; 11 | 12 | @Component 13 | public final class ThePetsAPIImpl implements ThePetsAPI { 14 | private @Getter @Inject DependencyHandler dependencyHandler; 15 | private @Getter @Inject UserPetService usersService; 16 | private @Getter @Inject PetService petsService; 17 | } 18 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/event/PetCreateEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.event; 2 | 3 | import com.qualityplus.assistant.api.event.AssistantEvent; 4 | import com.qualityplus.pets.persistance.data.PetData; 5 | import lombok.Getter; 6 | 7 | @Getter 8 | public final class PetCreateEvent extends AssistantEvent { 9 | private final PetData petData; 10 | 11 | public PetCreateEvent(PetData petData) { 12 | this.petData = petData; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/event/PetDespawnEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.event; 2 | 3 | import com.qualityplus.assistant.api.event.AssistantEvent; 4 | import com.qualityplus.pets.persistance.data.PetData; 5 | import lombok.Getter; 6 | 7 | @Getter 8 | public final class PetDespawnEvent extends AssistantEvent { 9 | private final PetData petData; 10 | 11 | public PetDespawnEvent(PetData petData) { 12 | this.petData = petData; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/event/PetLevelUPEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.event; 2 | 3 | import com.qualityplus.assistant.api.event.AssistantEvent; 4 | import com.qualityplus.pets.persistance.data.PetData; 5 | import lombok.Getter; 6 | 7 | @Getter 8 | public final class PetLevelUPEvent extends AssistantEvent { 9 | private final int newLevel; 10 | private final PetData data; 11 | 12 | public PetLevelUPEvent(PetData data, int newLevel) { 13 | this.newLevel = newLevel; 14 | this.data = data; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/event/PetXPGainEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.event; 2 | 3 | import com.qualityplus.assistant.api.event.AssistantEvent; 4 | import com.qualityplus.pets.persistance.data.PetData; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | public final class PetXPGainEvent extends AssistantEvent { 11 | private final PetData data; 12 | private double xp; 13 | 14 | public PetXPGainEvent(PetData data, double xp) { 15 | this.data = data; 16 | this.xp = xp; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/pet/egg/PetModelEngine.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.pet.egg; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | @Data 10 | @Builder 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public final class PetModelEngine extends OkaeriConfig { 14 | private String modelId; 15 | private boolean useModelEngine; 16 | private String modelEngineAnimation; 17 | } 18 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/pet/entity/PetEntityOptions.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.pet.entity; 2 | 3 | import com.qualityplus.assistant.lib.com.cryptomorin.xseries.XMaterial; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | import lombok.NoArgsConstructor; 8 | import lombok.Setter; 9 | 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @Getter 13 | @Setter 14 | public final class PetEntityOptions extends OkaeriConfig { 15 | private String displayName; 16 | private XMaterial material; 17 | private String texture; 18 | private String particle; 19 | } 20 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/pet/gui/PetGUIOptions.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.pet.gui; 2 | 3 | import com.qualityplus.assistant.lib.com.cryptomorin.xseries.XMaterial; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.*; 6 | 7 | import java.util.List; 8 | 9 | @AllArgsConstructor 10 | @NoArgsConstructor 11 | @Getter 12 | @Setter 13 | @Builder 14 | public final class PetGUIOptions extends OkaeriConfig { 15 | private int slot; 16 | private XMaterial item; 17 | private String texture; 18 | private List mainMenuLore; 19 | } 20 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/pet/type/PetType.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.pet.type; 2 | 3 | public enum PetType { 4 | BLOCK_BREAK, 5 | BLOCK_PLACE; 6 | } 7 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/rewards/PotionReward.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.rewards; 2 | 3 | import com.qualityplus.assistant.api.common.rewards.Reward; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.Data; 6 | import org.bukkit.entity.Player; 7 | 8 | @Data 9 | public final class PotionReward extends OkaeriConfig implements Reward { 10 | private String potion; 11 | private int level; 12 | 13 | @Override 14 | public void execute(Player player) { 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/rewards/PotionRewards.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.rewards; 2 | 3 | import com.qualityplus.assistant.api.common.rewards.LevellableRewards; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.util.HashMap; 10 | import java.util.List; 11 | import java.util.Map; 12 | 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | @Data 16 | public final class PotionRewards extends OkaeriConfig implements LevellableRewards { 17 | private Map> rewards = new HashMap<>(); 18 | } 19 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/rewards/StatRewards.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.rewards; 2 | 3 | import com.qualityplus.assistant.api.common.rewards.LevellableRewards; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.util.HashMap; 10 | import java.util.List; 11 | import java.util.Map; 12 | 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | @Data 16 | public final class StatRewards extends OkaeriConfig implements LevellableRewards { 17 | private Map> rewards = new HashMap<>(); 18 | } 19 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/service/PetFollowServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.service; 2 | 3 | import com.qualityplus.pets.api.pet.entity.PetEntity; 4 | import com.qualityplus.pets.api.service.PetFollowService; 5 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 6 | 7 | import java.util.Map; 8 | import java.util.UUID; 9 | 10 | @Component 11 | public final class PetFollowServiceImpl implements PetFollowService { 12 | @Override 13 | public void follow(Map.Entry entry){ 14 | entry.getValue().followOwner(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/service/PetParticleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.service; 2 | 3 | import com.qualityplus.pets.api.pet.entity.PetEntity; 4 | import com.qualityplus.pets.api.service.PetParticleService; 5 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 6 | 7 | import java.util.Map; 8 | import java.util.UUID; 9 | 10 | @Component 11 | public final class PetParticleServiceImpl implements PetParticleService { 12 | @Override 13 | public void spellParticle(Map.Entry entry){ 14 | entry.getValue().spellParticle(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/skills/DependencyHandlerImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.skills; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.injector.annotation.Inject; 4 | import com.qualityplus.pets.api.skills.DependencyHandler; 5 | import com.qualityplus.pets.api.skills.SkillDependency; 6 | 7 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 8 | import lombok.Getter; 9 | 10 | @Component 11 | public final class DependencyHandlerImpl implements DependencyHandler { 12 | private @Inject 13 | @Getter SkillDependency skills; 14 | } 15 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/base/skills/EmptySkillsPlugin.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.base.skills; 2 | 3 | import com.qualityplus.pets.api.skills.SkillDependency; 4 | import org.bukkit.entity.Player; 5 | 6 | public final class EmptySkillsPlugin implements SkillDependency { 7 | @Override 8 | public void addStat(Player player, String stat, double amount) { 9 | 10 | } 11 | 12 | @Override 13 | public void removeStat(Player player, String stat, double amount) { 14 | 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/persistance/data/PetData.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.persistance.data; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.util.UUID; 10 | 11 | @Data 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | @EqualsAndHashCode(callSuper = true) 15 | public final class PetData extends Document { 16 | private UUID uuid; 17 | private int level; 18 | private double xp; 19 | private String petId; 20 | 21 | public void addXp(double xp){ 22 | this.xp += xp; 23 | } 24 | 25 | public void addLevel(int i) { 26 | this.level += i; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/persistance/data/inside/InventoryPet.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.persistance.data.inside; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | import java.util.UUID; 9 | 10 | @Data 11 | @AllArgsConstructor 12 | @EqualsAndHashCode(callSuper = true) 13 | public class InventoryPet extends Document { 14 | private UUID uuid; 15 | private String petId; 16 | } 17 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/persistance/data/inside/SpawnedData.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.persistance.data.inside; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | import java.util.UUID; 8 | 9 | 10 | @Data 11 | @EqualsAndHashCode(callSuper = true) 12 | public final class SpawnedData extends Document{ 13 | private String spawnedPetId; 14 | private UUID spawnedPetUUID; 15 | } 16 | -------------------------------------------------------------------------------- /ThePets/src/main/java/com/qualityplus/pets/persistance/data/inside/UserSettings.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.pets.persistance.data.inside; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class UserSettings extends Document { 10 | private boolean convertPetToItemMode = false; 11 | private boolean petsAreHidden = false; 12 | } 13 | -------------------------------------------------------------------------------- /ThePets/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: ThePets 2 | description: The Pets Plugin 3 | main: com.qualityplus.pets.ThePets 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | softdepend: [TheSkills] 10 | commands: 11 | thepets: 12 | aliases: ["pets", "pet"] 13 | description: Pets's main command -------------------------------------------------------------------------------- /TheRunes/TheRunes-NMS/TheRunes-Legacy/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT' 3 | compileOnly project(':TheRunes:TheRunes-NMS') 4 | } -------------------------------------------------------------------------------- /TheRunes/TheRunes-NMS/TheRunes-Newest/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 3 | compileOnly project(':TheRunes:TheRunes-NMS') 4 | } -------------------------------------------------------------------------------- /TheRunes/TheRunes-NMS/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 3 | } -------------------------------------------------------------------------------- /TheRunes/build.gradle: -------------------------------------------------------------------------------- 1 | repositories { 2 | maven { 3 | url = uri("https://repo.papermc.io/repository/maven-public/") 4 | } 5 | } 6 | 7 | dependencies { 8 | project(':TheRunes').subprojects.forEach(project -> implementation project) 9 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 10 | compileOnly project(':TheSkills') 11 | implementation("io.papermc:paperlib:1.0.8-SNAPSHOT") 12 | compileOnly("io.papermc.paper:paper-api:1.21.3-R0.1-SNAPSHOT") 13 | } 14 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/api/TheRunesAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.api; 2 | 3 | import com.qualityplus.runes.api.box.Box; 4 | import com.qualityplus.runes.api.provider.LevelProvider; 5 | 6 | public interface TheRunesAPI { 7 | LevelProvider getLevelProvider(); 8 | 9 | Box getBox(); 10 | } 11 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/api/box/Box.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.api.box; 2 | 3 | import com.qualityplus.runes.api.config.ConfigFiles; 4 | import com.qualityplus.runes.api.service.RunesService; 5 | import com.qualityplus.runes.base.config.*; 6 | import org.bukkit.plugin.Plugin; 7 | 8 | public interface Box { 9 | ConfigFiles files(); 10 | 11 | RunesService runesService(); 12 | 13 | Plugin plugin(); 14 | } 15 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | public interface ConfigFiles extends ConfigReloader { 6 | C config(); 7 | T trades(); 8 | I inventories(); 9 | M messages(); 10 | CMD commands(); 11 | } 12 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/api/event/PlayerRuneEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import org.bukkit.entity.Player; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public abstract class PlayerRuneEvent extends PlayerAssistantEvent { 8 | public PlayerRuneEvent(@NotNull Player who) { 9 | super(who); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/api/provider/EffectProvider.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.api.provider; 2 | 3 | import com.qualityplus.runes.base.rune.Rune; 4 | import org.bukkit.entity.Entity; 5 | import org.bukkit.entity.Player; 6 | 7 | public interface EffectProvider{ 8 | void execute(Player player, Entity entity, Rune rune); 9 | } 10 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/api/provider/LevelProvider.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.api.provider; 2 | 3 | import org.bukkit.entity.Player; 4 | 5 | public interface LevelProvider { 6 | int getLevel(Player player); 7 | 8 | void addXp(Player player, double xp); 9 | } 10 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/api/service/RuneTableService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.api.service; 2 | import org.bukkit.Location; 3 | 4 | public interface RuneTableService { 5 | void createRuneTable(Location location); 6 | } 7 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/api/service/RunesService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.api.service; 2 | 3 | import org.bukkit.Location; 4 | 5 | public interface RunesService { 6 | void createRuneTable(Location location); 7 | } 8 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/api/session/RemoveSession.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.api.session; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import org.bukkit.inventory.ItemStack; 6 | 7 | public interface RemoveSession { 8 | ItemStack getItemToRemove(); 9 | 10 | RemoveSessionResult getSessionResult(); 11 | 12 | boolean isSuccess(); 13 | 14 | @AllArgsConstructor 15 | public enum RemoveSessionResult { 16 | ITEM_SET(false), 17 | ITEM_IS_NOT_RUNED(true),; 18 | 19 | private final @Getter boolean error; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/api/session/RuneInstance.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.api.session; 2 | 3 | import com.qualityplus.runes.base.rune.Rune; 4 | 5 | public interface RuneInstance { 6 | Rune getRune(); 7 | int getLevel(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/TheRunesAPIImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.injector.annotation.Inject; 4 | import com.qualityplus.runes.api.TheRunesAPI; 5 | import com.qualityplus.runes.api.box.Box; 6 | import com.qualityplus.runes.api.provider.LevelProvider; 7 | 8 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 9 | import lombok.Getter; 10 | 11 | @Component 12 | public final class TheRunesAPIImpl implements TheRunesAPI { 13 | private @Inject @Getter LevelProvider levelProvider; 14 | private @Inject 15 | @Getter Box box; 16 | } 17 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/event/FakeEntitySpawnEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.event; 2 | 3 | import com.qualityplus.assistant.api.event.AssistantEvent; 4 | import lombok.Getter; 5 | import org.bukkit.entity.Entity; 6 | 7 | public final class FakeEntitySpawnEvent extends AssistantEvent { 8 | private @Getter final Entity entity; 9 | 10 | public FakeEntitySpawnEvent(Entity entity) { 11 | this.entity = entity; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/event/RuneTableUseEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.event; 2 | 3 | import com.qualityplus.runes.api.event.PlayerRuneEvent; 4 | import com.qualityplus.runes.api.session.RuneSession; 5 | import lombok.Getter; 6 | import org.bukkit.entity.Player; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | @Getter 10 | public final class RuneTableUseEvent extends PlayerRuneEvent { 11 | private final RuneSession session; 12 | 13 | public RuneTableUseEvent(@NotNull Player who, RuneSession session) { 14 | super(who); 15 | 16 | this.session = session; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/gui/ClickHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.gui; 2 | 3 | import org.bukkit.event.inventory.InventoryClickEvent; 4 | 5 | public interface ClickHandler { 6 | void handle(InventoryClickEvent paramInventoryClickEvent); 7 | 8 | void handleOutSide(InventoryClickEvent paramInventoryClickEvent); 9 | } 10 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/gui/runetable/effect/EffectHandler.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.gui.runetable.effect; 2 | 3 | import com.qualityplus.runes.api.session.RuneSession; 4 | import org.bukkit.entity.Player; 5 | import org.bukkit.inventory.Inventory; 6 | import org.bukkit.inventory.ItemStack; 7 | 8 | public interface EffectHandler{ 9 | void handle(Player player, T gui, Inventory inventory); 10 | 11 | ItemStack getResult(Player player, RuneSession session); 12 | 13 | void setHasBeenClosed(boolean hasBeenClosed); 14 | 15 | void cancelFusing(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/provider/XPLevelProvider.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.provider; 2 | 3 | import com.qualityplus.runes.api.provider.LevelProvider; 4 | import org.bukkit.entity.Player; 5 | 6 | public final class XPLevelProvider implements LevelProvider { 7 | @Override 8 | public int getLevel(Player player) { 9 | return player.getLevel(); 10 | } 11 | 12 | @Override 13 | public void addXp(Player player, double xp) { 14 | player.setTotalExperience((int) (player.getTotalExperience() + xp)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/rune/EffectBridge.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.rune; 2 | 3 | import org.bukkit.entity.Entity; 4 | import org.bukkit.entity.Player; 5 | 6 | @FunctionalInterface 7 | public interface EffectBridge { 8 | void applyExact(Player player, Entity entity, Rune rune); 9 | } 10 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/rune/RuneApply.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.rune; 2 | 3 | public enum RuneApply { 4 | BOOTS, 5 | BOW, 6 | SWORD 7 | } 8 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/rune/RuneLevel.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.rune; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | 7 | @AllArgsConstructor 8 | @Getter 9 | public final class RuneLevel extends OkaeriConfig { 10 | private final int level; 11 | private final double successChance; 12 | private final int requiredRuneCraftingLevel; 13 | } 14 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/rune/effects/apply/BootEffect.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.rune.effects.apply; 2 | 3 | import com.qualityplus.runes.base.rune.Rune; 4 | import org.bukkit.Location; 5 | import org.bukkit.entity.Entity; 6 | import org.bukkit.entity.Player; 7 | import org.bukkit.util.Vector; 8 | 9 | public final class BootEffect implements ChainEffect{ 10 | @Override 11 | public void execute(Player player, Entity entity, Rune rune) { 12 | Location location = entity.getLocation().getBlock().getLocation().clone().add(new Vector(0, 0.2, 0)); 13 | 14 | displayEffect(location, rune); 15 | 16 | displayFakeItems(location, rune); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/rune/effects/apply/SwordEffect.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.rune.effects.apply; 2 | 3 | import com.qualityplus.runes.base.rune.Rune; 4 | import org.bukkit.Location; 5 | import org.bukkit.entity.Entity; 6 | import org.bukkit.entity.Player; 7 | 8 | import java.util.Optional; 9 | 10 | public final class SwordEffect implements ChainEffect{ 11 | @Override 12 | public void execute(Player player, Entity entity, Rune rune) { 13 | Location location = entity.getLocation(); 14 | 15 | displayEffect(location, rune); 16 | 17 | displayFakeItems(location, rune); 18 | 19 | if(!rune.getEffect().isStrikeLightning()) return; 20 | 21 | Optional.ofNullable(location.getWorld()).ifPresent(world -> world.strikeLightningEffect(location)); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/service/RunesServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.service; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.injector.annotation.Inject; 4 | import com.qualityplus.runes.api.service.RuneTableService; 5 | import com.qualityplus.runes.api.service.RunesService; 6 | 7 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 8 | import org.bukkit.Location; 9 | 10 | 11 | @Component 12 | public final class RunesServiceImpl implements RunesService { 13 | private @Inject RuneTableService tableService; 14 | 15 | @Override 16 | public void createRuneTable(Location location) { 17 | tableService.createRuneTable(location); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/session/ItemRuneInstanceImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.session; 2 | 3 | import com.qualityplus.runes.api.session.RuneInstance; 4 | import com.qualityplus.runes.base.rune.Rune; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | 8 | @AllArgsConstructor 9 | @Getter 10 | public final class ItemRuneInstanceImpl implements RuneInstance { 11 | private final Rune rune; 12 | private final int level; 13 | } 14 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/session/RemoveSessionImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.session; 2 | 3 | import com.qualityplus.runes.api.session.RemoveSession; 4 | import com.qualityplus.runes.util.RuneFinderUtil; 5 | import lombok.Getter; 6 | import org.bukkit.inventory.ItemStack; 7 | 8 | @Getter 9 | public final class RemoveSessionImpl implements RemoveSession { 10 | private final ItemStack itemToRemove; 11 | private final boolean success; 12 | 13 | public RemoveSessionImpl(ItemStack itemToRemove, boolean success) { 14 | this.itemToRemove = itemToRemove; 15 | this.success = success; 16 | } 17 | 18 | @Override 19 | public RemoveSessionResult getSessionResult() { 20 | return RuneFinderUtil.getAnswer(this); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/session/RuneInstanceImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.session; 2 | 3 | import com.qualityplus.runes.api.session.RuneInstance; 4 | import com.qualityplus.runes.base.rune.Rune; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | 8 | @AllArgsConstructor 9 | @Getter 10 | public final class RuneInstanceImpl implements RuneInstance { 11 | private final Rune rune; 12 | private final int level; 13 | } 14 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/table/RuneTable.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.table; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import org.bukkit.Bukkit; 6 | import org.bukkit.Location; 7 | import org.bukkit.entity.Entity; 8 | 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | import java.util.Objects; 12 | import java.util.UUID; 13 | 14 | @AllArgsConstructor 15 | public final class RuneTable { 16 | private @Getter Location spawnLocation; 17 | private List entities = new ArrayList<>(); 18 | 19 | public void removeTable(){ 20 | entities.stream() 21 | .map(Bukkit::getEntity) 22 | .filter(Objects::nonNull) 23 | .forEach(Entity::remove); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/table/effects/RuneTableEffect.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.table.effects; 2 | 3 | import com.qualityplus.assistant.inventory.Item; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | 9 | @Getter 10 | @Setter 11 | @AllArgsConstructor 12 | public final class RuneTableEffect extends OkaeriConfig { 13 | private Integer slot; 14 | private Item item; 15 | } 16 | -------------------------------------------------------------------------------- /TheRunes/src/main/java/com/qualityplus/runes/base/table/effects/RuneTableEffects.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.runes.base.table.effects; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | @Getter 12 | @Setter 13 | @AllArgsConstructor 14 | public final class RuneTableEffects extends OkaeriConfig { 15 | private Map> effectList; 16 | } 17 | -------------------------------------------------------------------------------- /TheRunes/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheRunes 2 | description: The Runes Plugin 3 | main: com.qualityplus.runes.TheRunes 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | softdepend: [TheSkills] 9 | depend: [TheAssistant] 10 | commands: 11 | therunes: 12 | aliases: ["runes"] 13 | description: Runes's main command -------------------------------------------------------------------------------- /TheSkills/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 3 | compileOnly fileTree(dir: 'libs', include: ['*.jar']) 4 | compileOnly project(':TheMinions') 5 | } -------------------------------------------------------------------------------- /TheSkills/libs/JetsMinions.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r3back/the-core/088b0f0dbc9f32a90809bae549e9d45817aef6a2/TheSkills/libs/JetsMinions.jar -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/api/config/AllGetter.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.api.config; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 4 | 5 | import java.util.List; 6 | 7 | public interface AllGetter { 8 | List getAll(); 9 | } 10 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | public interface ConfigFiles extends ConfigReloader { 6 | T config(); 7 | I inventories(); 8 | M messages(); 9 | C commands(); 10 | } 11 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/api/config/SkillFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 5 | 6 | import java.util.List; 7 | 8 | public interface SkillFiles extends ConfigReloader { 9 | A alchemy(); 10 | CA carpentry(); 11 | C combat(); 12 | D discoverer(); 13 | DU dungeoneering(); 14 | E enchanting(); 15 | F farming(); 16 | FH fishing(); 17 | FG foraging(); 18 | M mining(); 19 | R runeCrafting(); 20 | T taming(); 21 | 22 | List getAll(); 23 | } 24 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/api/config/StatFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | public interface StatFiles extends ConfigReloader, AllGetter { 6 | CC critChance(); 7 | CD critDamage(); 8 | D defense(); 9 | F ferocity(); 10 | I intelligence(); 11 | M magicFind(); 12 | P petLuck(); 13 | S speed(); 14 | ST strength(); 15 | } 16 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/api/event/PerkEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import com.qualityplus.skills.base.perk.Perk; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import org.bukkit.entity.Player; 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | @Getter 11 | @Setter 12 | public abstract class PerkEvent extends PlayerAssistantEvent { 13 | private Perk perk; 14 | 15 | public PerkEvent(@NotNull Player who, Perk perk) { 16 | super(who); 17 | this.perk = perk; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/api/event/SkillEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import com.qualityplus.skills.base.skill.Skill; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import org.bukkit.entity.Player; 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | @Getter 11 | @Setter 12 | public abstract class SkillEvent extends PlayerAssistantEvent { 13 | private Skill skill; 14 | 15 | public SkillEvent(@NotNull Player who, Skill skill) { 16 | super(who); 17 | this.skill = skill; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/api/event/StatEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import com.qualityplus.skills.base.stat.Stat; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import org.bukkit.entity.Player; 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | @Getter 11 | @Setter 12 | public abstract class StatEvent extends PlayerAssistantEvent { 13 | private Stat stat; 14 | 15 | public StatEvent(@NotNull Player who, Stat stat) { 16 | super(who); 17 | this.stat = stat; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/api/listener/ExtraListener.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.api.listener; 2 | 3 | import com.qualityplus.skills.base.skill.Skill; 4 | import org.bukkit.event.Listener; 5 | 6 | public interface ExtraListener extends Listener { 7 | public void applySkill(final Skill skill); 8 | } 9 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/api/provider/MinionsProvider.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.api.provider; 2 | 3 | import com.qualityplus.skills.api.listener.ExtraListener; 4 | 5 | import java.util.Optional; 6 | 7 | public interface MinionsProvider { 8 | Optional> getExtraListener(); 9 | } 10 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/api/service/ActionBarService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.api.service; 2 | 3 | import org.bukkit.entity.Player; 4 | 5 | import java.util.UUID; 6 | 7 | public interface ActionBarService { 8 | void sendActionBar(Player player, String message); 9 | 10 | void blacklist(UUID uuid); 11 | 12 | boolean isBlacklisted(UUID uuid); 13 | 14 | void whitelistTemp(UUID uuid); 15 | 16 | boolean isWhitelisted(UUID uuid); 17 | } 18 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/api/service/SkillsService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.api.service; 2 | 3 | import com.qualityplus.assistant.api.service.DataManagementService; 4 | import com.qualityplus.skills.base.skill.Skill; 5 | import com.qualityplus.skills.persistance.data.UserData; 6 | import org.bukkit.entity.Player; 7 | 8 | public interface SkillsService extends DataManagementService { 9 | void addXp(Player player, boolean useMulti, boolean showXpActionBar, Skill skill, double xp); 10 | } 11 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/config/perk/PerkFile.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.config.perk; 2 | 3 | import com.qualityplus.skills.base.config.common.BaseFile; 4 | 5 | public interface PerkFile extends BaseFile { 6 | } 7 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/config/stat/StatFile.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.config.stat; 2 | 3 | import com.qualityplus.skills.base.config.common.BaseFile; 4 | 5 | public interface StatFile extends BaseFile { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/event/CritDamageEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.event; 2 | 3 | import com.qualityplus.skills.api.event.StatEvent; 4 | import com.qualityplus.skills.base.stat.Stat; 5 | import org.bukkit.entity.Player; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | public final class CritDamageEvent extends StatEvent { 9 | public CritDamageEvent(@NotNull Player who, Stat stat) { 10 | super(who, stat); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/event/EntityFortunePerkEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.event; 2 | 3 | import com.qualityplus.skills.base.perk.Perk; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import org.bukkit.Location; 7 | import org.bukkit.entity.Entity; 8 | import org.bukkit.entity.Player; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | @Getter 12 | @Setter 13 | public final class EntityFortunePerkEvent extends FortunePerkEvent { 14 | private Entity toDropEntity; 15 | 16 | public EntityFortunePerkEvent(@NotNull Player who, Perk perk, Entity toDropEntity, Location toDropLocation) { 17 | super(who, perk, toDropLocation); 18 | 19 | this.toDropEntity = toDropEntity; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/event/FerocityDamageEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.event; 2 | 3 | import com.qualityplus.skills.api.event.StatEvent; 4 | import com.qualityplus.skills.base.stat.Stat; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import org.bukkit.entity.Entity; 8 | import org.bukkit.entity.Player; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | @Getter 12 | @Setter 13 | public final class FerocityDamageEvent extends StatEvent { 14 | private final Entity victim; 15 | private double damage; 16 | 17 | public FerocityDamageEvent(@NotNull Player who, Stat stat, Entity victim, double damage) { 18 | super(who, stat); 19 | 20 | this.victim = victim; 21 | this.damage = damage; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/event/FortunePerkEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.event; 2 | 3 | import com.qualityplus.skills.api.event.PerkEvent; 4 | import com.qualityplus.skills.base.perk.Perk; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import org.bukkit.Location; 8 | import org.bukkit.entity.Player; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | @Getter 12 | @Setter 13 | public abstract class FortunePerkEvent extends PerkEvent { 14 | private Location toDropLocation; 15 | 16 | public FortunePerkEvent(@NotNull Player who, Perk perk, Location toDropLocation) { 17 | super(who, perk); 18 | 19 | this.toDropLocation = toDropLocation; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/event/ItemFortunePerkEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.event; 2 | 3 | import com.qualityplus.skills.base.perk.Perk; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import org.bukkit.Location; 7 | import org.bukkit.entity.Player; 8 | import org.bukkit.inventory.ItemStack; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | import java.util.List; 12 | 13 | @Getter 14 | @Setter 15 | public final class ItemFortunePerkEvent extends FortunePerkEvent { 16 | private List toDropItems; 17 | 18 | public ItemFortunePerkEvent(@NotNull Player who, Perk perk, List toDropItems, Location toDropLocation) { 19 | super(who, perk, toDropLocation); 20 | 21 | this.toDropItems = toDropItems; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/event/SkillsLevelUPEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.event; 2 | 3 | import com.qualityplus.skills.api.event.SkillEvent; 4 | import com.qualityplus.skills.base.skill.Skill; 5 | import lombok.Getter; 6 | import org.bukkit.entity.Player; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | public final class SkillsLevelUPEvent extends SkillEvent { 10 | private @Getter final int newLevel; 11 | 12 | public SkillsLevelUPEvent(@NotNull Player who, Skill skill, int newLevel) { 13 | super(who, skill); 14 | 15 | this.newLevel = newLevel; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/event/SkillsXPGainEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.event; 2 | 3 | import com.qualityplus.skills.api.event.SkillEvent; 4 | import com.qualityplus.skills.base.skill.Skill; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import org.bukkit.entity.Player; 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | public final class SkillsXPGainEvent extends SkillEvent { 11 | private @Getter final boolean showXpActionBar; 12 | private @Getter @Setter double xp; 13 | 14 | public SkillsXPGainEvent(@NotNull Player who, Skill skill, double xp, boolean showXpActionBar) { 15 | super(who, skill); 16 | this.showXpActionBar = showXpActionBar; 17 | this.xp = xp; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/perk/perks/AbilityDamagePerk.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.perk.perks; 2 | 3 | import com.qualityplus.skills.base.perk.Perk; 4 | import com.qualityplus.skills.base.skill.gui.GUIOptions; 5 | import lombok.Builder; 6 | import lombok.Getter; 7 | import lombok.NoArgsConstructor; 8 | import lombok.Setter; 9 | 10 | import java.util.List; 11 | 12 | @Getter 13 | @Setter 14 | @NoArgsConstructor 15 | public final class AbilityDamagePerk extends Perk { 16 | @Builder 17 | public AbilityDamagePerk(String id, boolean enabled, String displayName, List description, GUIOptions skillGUIOptions, double initialAmount, double chancePerLevel) { 18 | super(id, enabled, displayName, description, skillGUIOptions, initialAmount, chancePerLevel); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/provider/MinionsProviderImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.provider; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.injector.annotation.Inject; 4 | import com.qualityplus.skills.api.listener.ExtraListener; 5 | import com.qualityplus.skills.api.provider.MinionsProvider; 6 | 7 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 8 | 9 | import java.util.Optional; 10 | 11 | @Component 12 | @SuppressWarnings("OptionalUsedAsFieldOrParameterType") 13 | public final class MinionsProviderImpl implements MinionsProvider { 14 | private @Inject("minionListener") Optional> injected; 15 | 16 | @Override 17 | public Optional> getExtraListener() { 18 | return injected; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/reward/StatRewards.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.reward; 2 | 3 | import com.qualityplus.assistant.api.common.rewards.LevellableRewards; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.HashMap; 9 | import java.util.List; 10 | import java.util.Map; 11 | 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | @Data 15 | public final class StatRewards implements LevellableRewards { 16 | private Map> rewards = new HashMap<>(); 17 | } 18 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/base/skill/skills/blockbreak/BlockBreakResponse.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.base.skill.skills.blockbreak; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Builder 9 | @AllArgsConstructor 10 | public final class BlockBreakResponse { 11 | private final double xp; 12 | } -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/gui/main/MainGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.gui.main; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.Item; 5 | import com.qualityplus.assistant.inventory.SimpleGUI; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Getter; 9 | import lombok.NoArgsConstructor; 10 | 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @Getter 14 | public final class MainGUIConfig extends OkaeriConfig implements SimpleGUI { 15 | private CommonGUI commonGUI; 16 | private Item skillsItem; 17 | private Item playerInfoItem; 18 | private Item customGoBackItem; 19 | } 20 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/persistance/data/UserData.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.persistance.data; 2 | 3 | import com.qualityplus.skills.persistance.data.user.UserSkills; 4 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | import java.util.UUID; 9 | 10 | @Data @EqualsAndHashCode(callSuper = true) 11 | public final class UserData extends Document { 12 | private UUID uuid; 13 | private String name; 14 | private UserSkills skills = new UserSkills(); 15 | 16 | public void resetData(){ 17 | skills.getXp().clear(); 18 | skills.getLevel().clear(); 19 | 20 | skills.fillIfEmpty(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /TheSkills/src/main/java/com/qualityplus/skills/util/SkillsPlayerUtil.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.skills.util; 2 | 3 | import lombok.experimental.UtilityClass; 4 | import org.bukkit.Bukkit; 5 | import org.bukkit.GameMode; 6 | import org.bukkit.entity.Player; 7 | 8 | @UtilityClass 9 | public final class SkillsPlayerUtil { 10 | public static boolean isInSurvival(Player player){ 11 | return player.getGameMode().equals(GameMode.SURVIVAL); 12 | } 13 | 14 | public static double getXpMultiplier(Player player){ 15 | double multiplier = 1; 16 | 17 | for(double i = 1.5D; i<10D; i+=0.5D) 18 | if(player.hasPermission("theskills.xp.multiplier." + i)) multiplier = Math.max(multiplier, i); 19 | 20 | 21 | 22 | return multiplier; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /TheSkills/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheSkills 2 | description: The Skills Plugin 3 | main: com.qualityplus.skills.TheSkills 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | softdepend: [TheMinions] 10 | commands: 11 | theskills: 12 | aliases: ["skills", "sk"] 13 | description: Skills's main command -------------------------------------------------------------------------------- /TheSouls/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 3 | } -------------------------------------------------------------------------------- /TheSouls/src/main/java/com/qualityplus/souls/api/TheSoulsAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.souls.api; 2 | 3 | public interface TheSoulsAPI { 4 | } 5 | -------------------------------------------------------------------------------- /TheSouls/src/main/java/com/qualityplus/souls/api/box/Box.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.souls.api.box; 2 | 3 | import com.qualityplus.souls.api.config.ConfigFiles; 4 | import com.qualityplus.souls.api.service.SoulsService; 5 | import com.qualityplus.souls.base.config.*; 6 | import com.qualityplus.souls.persistance.SoulsRepository; 7 | import org.bukkit.plugin.Plugin; 8 | 9 | public interface Box { 10 | ConfigFiles files(); 11 | SoulsRepository repository(); 12 | SoulsService service(); 13 | Plugin plugin(); 14 | } 15 | -------------------------------------------------------------------------------- /TheSouls/src/main/java/com/qualityplus/souls/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.souls.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | public interface ConfigFiles extends ConfigReloader { 6 | C config(); 7 | I inventories(); 8 | M messages(); 9 | CMD commands(); 10 | T tiaTheFairy(); 11 | S souls(); 12 | } 13 | -------------------------------------------------------------------------------- /TheSouls/src/main/java/com/qualityplus/souls/api/edition/EditionObject.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.souls.api.edition; 2 | 3 | import com.qualityplus.souls.base.soul.Soul; 4 | import lombok.Data; 5 | 6 | @Data 7 | public final class EditionObject { 8 | private final SoulEdition.EditionType type; 9 | private final Soul soul; 10 | } 11 | -------------------------------------------------------------------------------- /TheSouls/src/main/java/com/qualityplus/souls/api/edition/SoulEdition.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.souls.api.edition; 2 | 3 | import java.util.UUID; 4 | 5 | public interface SoulEdition { 6 | void setEditMode(UUID uuid, EditionObject type); 7 | 8 | void removeEditMode(UUID uuid); 9 | 10 | public enum EditionType{ 11 | ADD_MESSAGE, 12 | ADD_COMMAND 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /TheSouls/src/main/java/com/qualityplus/souls/api/service/SoulsService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.souls.api.service; 2 | 3 | import com.qualityplus.assistant.api.service.DataManagementService; 4 | import com.qualityplus.souls.persistance.data.SoulsData; 5 | 6 | public interface SoulsService extends DataManagementService { 7 | } 8 | -------------------------------------------------------------------------------- /TheSouls/src/main/java/com/qualityplus/souls/base/TheSoulsAPIImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.souls.base; 2 | 3 | import com.qualityplus.souls.api.TheSoulsAPI; 4 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 5 | 6 | @Component 7 | public final class TheSoulsAPIImpl implements TheSoulsAPI { 8 | } 9 | -------------------------------------------------------------------------------- /TheSouls/src/main/java/com/qualityplus/souls/base/gui/tia/TiaGUIConfig.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.souls.base.gui.tia; 2 | 3 | import com.qualityplus.assistant.inventory.CommonGUI; 4 | import com.qualityplus.assistant.inventory.Item; 5 | import com.qualityplus.assistant.inventory.SimpleGUI; 6 | import com.qualityplus.assistant.lib.eu.okaeri.configs.OkaeriConfig; 7 | import lombok.Builder; 8 | import lombok.Getter; 9 | 10 | @Getter 11 | public final class TiaGUIConfig extends OkaeriConfig implements SimpleGUI{ 12 | private final CommonGUI commonGUI; 13 | private final Item tiaItem; 14 | 15 | @Builder 16 | public TiaGUIConfig(CommonGUI commonGUI, Item tiaItem) { 17 | this.commonGUI = commonGUI; 18 | this.tiaItem = tiaItem; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TheSouls/src/main/java/com/qualityplus/souls/persistance/data/SoulsData.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.souls.persistance.data; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.persistence.document.Document; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | import java.util.List; 8 | import java.util.UUID; 9 | 10 | @Data @EqualsAndHashCode(callSuper = true) 11 | public final class SoulsData extends Document { 12 | private UUID uuid; 13 | private String name; 14 | private List soulsCollected; 15 | private List tiaSoulsCollected; 16 | 17 | public void removeAmount(int amount){ 18 | if (amount <= 0) return; 19 | 20 | tiaSoulsCollected = tiaSoulsCollected.subList(0, tiaSoulsCollected.size() - amount); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /TheSouls/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheSouls 2 | description: The Souls Plugin 3 | main: com.qualityplus.souls.TheSouls 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | commands: 10 | thesouls: 11 | aliases: [souls] 12 | description: Souls's main command -------------------------------------------------------------------------------- /TheTrades/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compileOnly 'org.spigotmc:spigot-api:1.18.1-R0.1-SNAPSHOT' 3 | compileOnly 'com.google.guava:guava:31.0.1-jre' 4 | } -------------------------------------------------------------------------------- /TheTrades/src/main/java/com/qualityplus/trades/api/TheTradesAPI.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.trades.api; 2 | 3 | public interface TheTradesAPI { 4 | } 5 | -------------------------------------------------------------------------------- /TheTrades/src/main/java/com/qualityplus/trades/api/box/Box.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.trades.api.box; 2 | 3 | import com.qualityplus.trades.api.config.ConfigFiles; 4 | import com.qualityplus.trades.api.service.TradesService; 5 | import com.qualityplus.trades.base.config.*; 6 | import org.bukkit.plugin.Plugin; 7 | 8 | public interface Box { 9 | ConfigFiles files(); 10 | 11 | TradesService tradesService(); 12 | 13 | Plugin plugin(); 14 | } 15 | -------------------------------------------------------------------------------- /TheTrades/src/main/java/com/qualityplus/trades/api/config/ConfigFiles.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.trades.api.config; 2 | 3 | import com.qualityplus.assistant.api.config.ConfigReloader; 4 | 5 | public interface ConfigFiles extends ConfigReloader { 6 | C config(); 7 | T trades(); 8 | I inventories(); 9 | M messages(); 10 | CMD commands(); 11 | } 12 | -------------------------------------------------------------------------------- /TheTrades/src/main/java/com/qualityplus/trades/api/event/TradeEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.trades.api.event; 2 | 3 | import com.qualityplus.assistant.api.event.PlayerAssistantEvent; 4 | import org.bukkit.entity.Player; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public abstract class TradeEvent extends PlayerAssistantEvent { 8 | public TradeEvent(@NotNull Player who) { 9 | super(who); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /TheTrades/src/main/java/com/qualityplus/trades/api/provider/CheckerProvider.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.trades.api.provider; 2 | 3 | import org.bukkit.entity.Player; 4 | 5 | public interface CheckerProvider{ 6 | void checkout(Player player, T toCheckout); 7 | } 8 | -------------------------------------------------------------------------------- /TheTrades/src/main/java/com/qualityplus/trades/api/service/TradesService.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.trades.api.service; 2 | 3 | import com.qualityplus.trades.api.session.TradeSession; 4 | import com.qualityplus.trades.base.trades.PluginTrade; 5 | import org.bukkit.entity.Player; 6 | 7 | public interface TradesService { 8 | void checkout(Player player, TradeSession session); 9 | 10 | TradeSession newSession(PluginTrade trade, int amount); 11 | } 12 | -------------------------------------------------------------------------------- /TheTrades/src/main/java/com/qualityplus/trades/api/session/TradeSession.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.trades.api.session; 2 | 3 | import com.qualityplus.trades.base.trades.PluginTrade; 4 | 5 | public interface TradeSession { 6 | PluginTrade getTrade(); 7 | int getAmount(); 8 | } 9 | -------------------------------------------------------------------------------- /TheTrades/src/main/java/com/qualityplus/trades/base/TheTradesAPIImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.trades.base; 2 | 3 | import com.qualityplus.assistant.lib.eu.okaeri.platform.core.annotation.Component; 4 | import com.qualityplus.trades.api.TheTradesAPI; 5 | 6 | @Component 7 | public final class TheTradesAPIImpl implements TheTradesAPI { 8 | } 9 | -------------------------------------------------------------------------------- /TheTrades/src/main/java/com/qualityplus/trades/base/event/PlayerTradeEvent.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.trades.base.event; 2 | 3 | import com.qualityplus.trades.api.event.TradeEvent; 4 | import com.qualityplus.trades.base.trades.PluginTrade; 5 | import lombok.Getter; 6 | import org.bukkit.entity.Player; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | @Getter 10 | public final class PlayerTradeEvent extends TradeEvent { 11 | private final PluginTrade trade; 12 | 13 | public PlayerTradeEvent(@NotNull Player who, PluginTrade trade) { 14 | super(who); 15 | 16 | this.trade = trade; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /TheTrades/src/main/java/com/qualityplus/trades/base/session/TradeSessionImpl.java: -------------------------------------------------------------------------------- 1 | package com.qualityplus.trades.base.session; 2 | 3 | import com.qualityplus.trades.api.session.TradeSession; 4 | import com.qualityplus.trades.base.trades.PluginTrade; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | 8 | @AllArgsConstructor 9 | @Getter 10 | public final class TradeSessionImpl implements TradeSession { 11 | private final PluginTrade trade; 12 | private final int amount; 13 | } 14 | -------------------------------------------------------------------------------- /TheTrades/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: TheTrades 2 | description: The Trades Plugin 3 | main: com.qualityplus.trades.TheTrades 4 | version: ${version} 5 | api-version: 1.13 6 | authors: [QualityPlus] 7 | load: POSTWORLD 8 | depend: [TheAssistant] 9 | commands: 10 | thetrades: 11 | aliases: ["trades"] 12 | description: Trades's main command -------------------------------------------------------------------------------- /config/checkstyle/suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | gradle: 5 | image: gradle:jdk17-jammy 6 | volumes: 7 | - .:/app 8 | working_dir: /app 9 | command: gradle clean build -x shadowJar -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | version = 1.0.0 2 | plugin-name = core 3 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r3back/the-core/088b0f0dbc9f32a90809bae549e9d45817aef6a2/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'TheCore' 2 | include 'TheSkills' 3 | include 'TheAlchemy' 4 | include 'ThePets' 5 | include 'TheBank' 6 | include 'TheAuction' 7 | include 'TheCrafting' 8 | include 'TheDragon' 9 | include 'TheMinions' 10 | include 'TheAnvil' 11 | include 'TheCollections' 12 | include 'TheTrades' 13 | include 'TheSouls' 14 | include ('TheRunes', 15 | 'TheRunes:TheRunes-NMS', 16 | 'TheRunes:TheRunes-NMS:TheRunes-Legacy', 17 | 'TheRunes:TheRunes-NMS:TheRunes-Newest') 18 | include ('TheEnchanting', 19 | 'TheEnchanting:TheEnchanting-NMS', 20 | 'TheEnchanting:TheEnchanting-NMS:TheEnchanting-Legacy', 21 | 'TheEnchanting:TheEnchanting-NMS:TheEnchanting-Newest', 22 | 'TheEnchanting:TheEnchanting-NMS:TheEnchanting-Newest-1_20') 23 | 24 | -------------------------------------------------------------------------------- /test-suite/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | test-server: 5 | image: itzg/minecraft-server:java17 6 | environment: 7 | CFG_SERVER_NAME: "test-server" 8 | ports: 9 | - "25565:25565" 10 | env_file: 11 | - mc-config/mc.env 12 | volumes: 13 | - ./mc-config:/config 14 | - ./mc-config/plugins:/data/plugins -------------------------------------------------------------------------------- /test-suite/mc-config/mc.env: -------------------------------------------------------------------------------- 1 | TYPE=PAPER 2 | VERSION=1.20.4 3 | EULA=TRUE 4 | ONLINE_MODE=TRUE 5 | COPY_CONFIG_DEST=/data 6 | REPLACE_ENV_VARIABLES=TRUE 7 | ENV_VARIABLE_PREFIX=CFG_ --------------------------------------------------------------------------------