├── .gitattributes ├── clans └── src │ └── main │ ├── resources │ ├── configs │ │ └── items │ │ │ ├── armor.yml │ │ │ ├── block.yml │ │ │ ├── misc.yml │ │ │ ├── tool.yml │ │ │ ├── consumable.yml │ │ │ ├── material.yml │ │ │ └── weapon.yml │ └── plugin.yml │ └── java │ └── me │ └── mykindos │ └── betterpvp │ └── clans │ ├── clans │ ├── insurance │ │ └── InsuranceType.java │ ├── map │ │ └── data │ │ │ ├── MapPixel.java │ │ │ └── Coords.java │ ├── events │ │ ├── ClanEnemyEvent.java │ │ ├── ClanTrustEvent.java │ │ ├── ClanAllianceEvent.java │ │ ├── ClanNeutralEvent.java │ │ ├── ClanUntrustEvent.java │ │ ├── MemberJoinClanEvent.java │ │ ├── MemberLeaveClanEvent.java │ │ ├── ClanBannerUpdateEvent.java │ │ ├── EnergyCheckEvent.java │ │ ├── MemberDemoteEvent.java │ │ ├── ClanDominanceChangeEvent.java │ │ ├── MemberPromoteEvent.java │ │ ├── ClanDisbandEvent.java │ │ ├── ClanCreateEvent.java │ │ ├── ChunkClaimEvent.java │ │ ├── ClanPropertyUpdateEvent.java │ │ ├── ChunkUnclaimEvent.java │ │ ├── ClanInviteMemberEvent.java │ │ ├── ClanTerritoryEvent.java │ │ ├── ClanRelationshipEvent.java │ │ └── ClanKickMemberEvent.java │ ├── ClanProperty.java │ ├── pillage │ │ └── events │ │ │ ├── PillageEndEvent.java │ │ │ └── PillageStartEvent.java │ ├── core │ │ └── events │ │ │ └── ClanCoreDestroyedEvent.java │ ├── data │ │ └── ClanDefaultValues.java │ └── listeners │ │ └── ClanListener.java │ └── injector │ └── ClansInjectorModule.java ├── core └── src │ └── main │ ├── resources │ ├── configs │ │ ├── items │ │ │ ├── armor.yml │ │ │ ├── block.yml │ │ │ ├── misc.yml │ │ │ ├── tool.yml │ │ │ ├── weapon.yml │ │ │ ├── consumable.yml │ │ │ └── material.yml │ │ └── resourcepacks.yml │ ├── plugin.yml │ └── core-migrations │ │ └── postgres │ │ ├── chat │ │ └── V20250630_1__Create_filtered_words_table.sql │ │ ├── client │ │ └── V20251027_1__Move_gamer_to_global_db.sql │ │ ├── logging │ │ └── V20250610_1__Move_block_tagging_to_global.sql │ │ └── items │ │ └── V20250625_1__Create_smart_block_data_table.sql │ └── java │ └── me │ └── mykindos │ └── betterpvp │ └── core │ ├── framework │ ├── inviting │ │ └── Invitable.java │ ├── CurrentMode.java │ ├── events │ │ ├── ServerStartEvent.java │ │ ├── lunar │ │ │ └── LunarClientEvent.java │ │ └── kill │ │ │ └── PlayerSuicideEvent.java │ ├── sidebar │ │ ├── ConditionalSidebarComponent.java │ │ └── SidebarType.java │ ├── customtypes │ │ └── IMapListener.java │ ├── annotations │ │ └── WithReflection.java │ ├── blocktag │ │ ├── BlockTags.java │ │ └── BlockTag.java │ ├── hat │ │ └── HatProvider.java │ ├── ModuleLoadedEvent.java │ ├── delayedactions │ │ ├── DelayedAction.java │ │ └── events │ │ │ ├── ClanCoreTeleportEvent.java │ │ │ └── ClanStuckTeleportEvent.java │ ├── Loader.java │ └── adapter │ │ └── PluginAdapters.java │ ├── logging │ ├── LogAppender.java │ └── menu │ │ └── button │ │ └── type │ │ ├── IRefreshButton.java │ │ ├── IStringFilterButton.java │ │ └── IStringFilterValueButton.java │ ├── utilities │ ├── events │ │ └── EntityProperty.java │ ├── model │ │ ├── display │ │ │ ├── playerlist │ │ │ │ └── PlayerListType.java │ │ │ ├── ITimedDisplay.java │ │ │ ├── IDisplayObject.java │ │ │ ├── experience │ │ │ │ └── data │ │ │ │ │ ├── ExperienceLevelData.java │ │ │ │ │ └── ExperienceBarData.java │ │ │ └── IDisplayQueue.java │ │ ├── data │ │ │ ├── PriorityData.java │ │ │ └── CustomDataType.java │ │ ├── Unique.java │ │ ├── description │ │ │ └── Describable.java │ │ ├── Reloadable.java │ │ ├── ConfigAccessor.java │ │ └── MultiRayTraceResult.java │ ├── math │ │ └── VectorParabola.java │ └── UtilUUID.java │ ├── combat │ ├── events │ │ ├── VelocityType.java │ │ ├── DamageIndicatorEvent.java │ │ └── EntityCanHurtEntityEvent.java │ ├── adapters │ │ └── CustomDamageAdapter.java │ ├── stats │ │ └── model │ │ │ ├── Contribution.java │ │ │ ├── ICombatDataAttachment.java │ │ │ └── Kill.java │ ├── click │ │ ├── events │ │ │ └── RightClickEndEvent.java │ │ └── RightClickContext.java │ ├── data │ │ ├── DamageData.java │ │ └── FireData.java │ ├── modifiers │ │ └── DamageOperator.java │ ├── throwables │ │ ├── events │ │ │ ├── ThrowableHitEvent.java │ │ │ └── ThrowableHitGroundEvent.java │ │ └── ThrowableListener.java │ ├── death │ │ └── events │ │ │ └── CustomDeathEvent.java │ ├── combatlog │ │ └── events │ │ │ ├── PlayerClickCombatLogEvent.java │ │ │ └── PlayerCombatLogEvent.java │ └── listeners │ │ └── mythicmobs │ │ └── DamageIndicator.java │ ├── components │ ├── champions │ │ ├── SkillType.java │ │ └── events │ │ │ ├── PlayerUseToggleSkillEvent.java │ │ │ ├── PlayerUseInteractSkillEvent.java │ │ │ ├── PlayerCanUseSkillEvent.java │ │ │ ├── PlayerUseItemEvent.java │ │ │ └── PlayerUseSkillEvent.java │ ├── shops │ │ ├── ShopCurrency.java │ │ └── IShopItem.java │ └── clans │ │ ├── data │ │ ├── ClanTerritory.java │ │ └── ClanAlliance.java │ │ └── events │ │ ├── ClanAddExperienceEvent.java │ │ └── ClanEvent.java │ ├── loot │ ├── chest │ │ ├── DefaultAwardStrategy.java │ │ ├── SmallLootChest.java │ │ └── BigLootChest.java │ ├── ReplacementStrategy.java │ └── loader │ │ └── LootTableLoader.java │ ├── parties │ ├── PartyMemberFilter.java │ ├── PartyMemberReadyStatus.java │ └── events │ │ └── PartyCreateEvent.java │ ├── resourcepack │ ├── IResourcePackLoader.java │ └── exceptions │ │ └── ResourcePackShaException.java │ ├── block │ ├── SmartBlockInteractionService.java │ ├── impl │ │ ├── DefaultSmartBlockInteractionService.java │ │ └── workbench │ │ │ └── WorkbenchData.java │ ├── nexo │ │ └── NexoBlock.java │ ├── oraxen │ │ └── OraxenBlock.java │ └── data │ │ └── BlockRemovalCause.java │ ├── command │ ├── IConfirmable.java │ ├── IConsoleCommand.java │ └── SubCommand.java │ ├── inventory │ ├── util │ │ ├── TriConsumer.java │ │ ├── MathUtils.java │ │ └── Point2D.java │ ├── Items.kt │ ├── inventory │ │ ├── StackSizeProvider.java │ │ └── event │ │ │ └── UpdateReason.java │ ├── ItemBuilders.kt │ ├── adventure │ │ └── AdventureWindows.kt │ └── gui │ │ ├── structure │ │ └── Marker.java │ │ └── GuiParent.java │ ├── world │ ├── generator │ │ └── VoidWorldGenerator.java │ ├── logger │ │ ├── MetadataEntry.java │ │ ├── WorldLogQueryType.java │ │ ├── formatters │ │ │ └── WorldLogFormatter.java │ │ ├── WorldLogAction.java │ │ └── WorldLogSession.java │ └── events │ │ ├── PlayerUseStonecutterEvent.java │ │ └── SpawnTeleportEvent.java │ ├── menu │ ├── CooldownButton.java │ └── PreviousableButton.java │ ├── stats │ ├── repository │ │ ├── PlayerData.java │ │ └── StatHolder.java │ ├── sort │ │ ├── Sorted.java │ │ ├── SortType.java │ │ └── TemporalSort.java │ ├── filter │ │ ├── Filtered.java │ │ └── FilterType.java │ ├── LeaderboardCategory.java │ └── event │ │ └── LeaderboardInitializeEvent.java │ ├── redis │ └── CacheObject.java │ ├── item │ ├── ItemGroup.java │ ├── component │ │ ├── impl │ │ │ ├── ability │ │ │ │ ├── serialization │ │ │ │ │ ├── ItemAbilitySerializer.java │ │ │ │ │ └── ItemAbilityDeserializer.java │ │ │ │ └── TriggerType.java │ │ │ ├── runes │ │ │ │ └── RuneColor.java │ │ │ └── stat │ │ │ │ └── serialization │ │ │ │ ├── StatSerializer.java │ │ │ │ └── StatDeserializer.java │ │ └── serialization │ │ │ ├── ComponentSerializer.java │ │ │ └── ComponentDeserializer.java │ └── impl │ │ ├── StandardPickaxe.java │ │ ├── CrudeAxe.java │ │ ├── CrudeHoe.java │ │ ├── PowerAxe.java │ │ ├── PowerHoe.java │ │ ├── RusticAxe.java │ │ ├── RusticHoe.java │ │ ├── BoosterAxe.java │ │ ├── BoosterHoe.java │ │ ├── CrudeSword.java │ │ ├── StandardAxe.java │ │ ├── StandardHoe.java │ │ ├── AncientAxe.java │ │ ├── AncientHoe.java │ │ ├── CrudeShovel.java │ │ ├── PowerSword.java │ │ ├── RusticSword.java │ │ ├── Axe.java │ │ ├── BoosterSword.java │ │ ├── CrudePickaxe.java │ │ ├── Hoe.java │ │ ├── PowerShovel.java │ │ ├── RusticShovel.java │ │ ├── StandardSword.java │ │ ├── AncientSword.java │ │ ├── BoosterShovel.java │ │ ├── PowerPickaxe.java │ │ ├── RusticPickaxe.java │ │ ├── StandardShovel.java │ │ ├── AncientShovel.java │ │ ├── Pickaxe.java │ │ ├── Shovel.java │ │ ├── Sword.java │ │ └── BoosterPickaxe.java │ ├── database │ ├── connection │ │ └── IDatabaseConnection.java │ ├── repository │ │ └── IRepository.java │ └── ConnectionData.java │ ├── discord │ └── embeds │ │ ├── EmbedFooter.java │ │ ├── EmbedAuthor.java │ │ ├── EmbedField.java │ │ └── EmbedObject.java │ ├── config │ ├── Saved.java │ └── Config.java │ ├── client │ ├── punishments │ │ └── types │ │ │ ├── RevokeType.java │ │ │ └── WarnPunishmentType.java │ ├── gamer │ │ ├── exceptions │ │ │ └── NoSuchGamerException.java │ │ └── properties │ │ │ ├── GamerProperty.java │ │ │ └── GamerPropertyUpdateEvent.java │ ├── exception │ │ └── ClientNotLoadedException.java │ ├── events │ │ ├── ClientUnloadEvent.java │ │ ├── ClientAdministrateEvent.java │ │ └── ClientFetchExternalDataEvent.java │ ├── properties │ │ └── ClientPropertyUpdateEvent.java │ └── offlinemessages │ │ └── menu │ │ └── OfflineMessagesMenu.java │ ├── effects │ ├── types │ │ ├── positive │ │ │ ├── JumpEffect.java │ │ │ ├── AttackSpeedEffect.java │ │ │ ├── EnergyReductionEffect.java │ │ │ ├── CooldownReductionEffect.java │ │ │ ├── ImmuneEffect.java │ │ │ ├── InvulnerableEffect.java │ │ │ ├── GlowingEffect.java │ │ │ └── JumpBoostEffect.java │ │ └── negative │ │ │ ├── NoSprintEffect.java │ │ │ ├── StunEffect.java │ │ │ ├── NauseaEffect.java │ │ │ └── WitherEffect.java │ └── events │ │ ├── EffectClearEvent.java │ │ └── EffectReceiveEvent.java │ ├── listener │ └── BPvPListener.java │ ├── scheduler │ └── TaskScheduler.java │ ├── chat │ ├── channels │ │ └── IChatChannel.java │ ├── filter │ │ └── IFilterService.java │ ├── ignore │ │ └── IIgnoreService.java │ └── commands │ │ └── ChannelCommand.java │ ├── metal │ └── casting │ │ └── IngotCastingMold.java │ ├── skill │ └── ISkill.java │ ├── properties │ └── PropertyUpdateEvent.java │ ├── settings │ └── menus │ │ └── SettingCategory.java │ ├── cooldowns │ └── events │ │ └── CooldownEvent.java │ ├── light │ └── BPvPLight.java │ ├── supplycrate │ └── event │ │ ├── SupplyCrateLandEvent.java │ │ └── SupplyCrateDeployEvent.java │ ├── recipe │ ├── crafting │ │ └── CraftingResult.java │ └── RecipeRegistry.java │ ├── tips │ └── types │ │ └── IRunCommand.java │ └── energy │ └── events │ ├── UpdateMaxEnergyEvent.java │ └── DegenerateEnergyEvent.java ├── champions └── src │ └── main │ ├── resources │ ├── configs │ │ └── items │ │ │ ├── block.yml │ │ │ ├── misc.yml │ │ │ ├── tool.yml │ │ │ ├── consumable.yml │ │ │ └── material.yml │ ├── plugin.yml │ └── champions-migrations │ │ └── postgres │ │ ├── V20251108_1__Create_game_tables.sql │ │ └── V20251027_1__Move_builds_to_global_db.sql │ └── java │ └── me │ └── mykindos │ └── betterpvp │ └── champions │ ├── champions │ ├── skills │ │ ├── types │ │ │ ├── BuffSkill.java │ │ │ ├── FireSkill.java │ │ │ ├── TeamSkill.java │ │ │ ├── WorldSkill.java │ │ │ ├── DamageSkill.java │ │ │ ├── DebuffSkill.java │ │ │ ├── HealthSkill.java │ │ │ ├── MovementSkill.java │ │ │ ├── UtilitySkill.java │ │ │ ├── DefensiveSkill.java │ │ │ ├── OffensiveSkill.java │ │ │ ├── AreaOfEffectSkill.java │ │ │ ├── CrowdControlSkill.java │ │ │ ├── EnergyChannelSkill.java │ │ │ ├── ClassType.java │ │ │ ├── EnergySkill.java │ │ │ ├── ToggleSkill.java │ │ │ ├── PassiveSkill.java │ │ │ └── InteractSkill.java │ │ ├── skills │ │ │ ├── knight │ │ │ │ └── data │ │ │ │ │ └── RiposteData.java │ │ │ ├── brute │ │ │ │ └── data │ │ │ │ │ ├── SeismicSlamData.java │ │ │ │ │ └── StampedeData.java │ │ │ ├── warlock │ │ │ │ └── data │ │ │ │ │ └── WreathData.java │ │ │ ├── assassin │ │ │ │ └── data │ │ │ │ │ ├── ComboAttackData.java │ │ │ │ │ ├── FlashData.java │ │ │ │ │ ├── ShockingStrikesData.java │ │ │ │ │ └── SilencingStrikesData.java │ │ │ └── ranger │ │ │ │ └── data │ │ │ │ └── StackingHitData.java │ │ └── data │ │ │ └── SkillActions.java │ ├── roles │ │ ├── RoleEffect.java │ │ └── events │ │ │ └── RoleChangeEvent.java │ ├── npc │ │ └── KitSelectorUseEvent.java │ └── builds │ │ ├── menus │ │ └── events │ │ │ ├── SkillDequipEvent.java │ │ │ └── SkillEquipEvent.java │ │ └── event │ │ └── ChampionsBuildLoadedEvent.java │ ├── properties │ ├── ChampionsProperty.java │ └── ChampionsPropertyUpdateEvent.java │ ├── utilities │ └── ChampionsNamespacedKeys.java │ └── injector │ └── ChampionsInjectorModule.java ├── progression └── src │ └── main │ ├── resources │ ├── configs │ │ ├── items │ │ │ ├── misc.yml │ │ │ ├── tool.yml │ │ │ ├── armor.yml │ │ │ ├── block.yml │ │ │ ├── material.yml │ │ │ ├── weapon.yml │ │ │ └── consumable.yml │ │ └── professions │ │ │ ├── mining.yml │ │ │ └── fishing.yml │ └── plugin.yml │ └── java │ └── me │ └── mykindos │ └── betterpvp │ └── progression │ ├── profession │ ├── skill │ │ ├── PerkActivator.java │ │ ├── ProgressionSkillDependency.java │ │ ├── IProgressionSkill.java │ │ ├── CooldownProgressionSkill.java │ │ └── fishing │ │ │ └── FishingProgressionSkill.java │ ├── IProfession.java │ ├── fishing │ │ ├── data │ │ │ └── CaughtFish.java │ │ ├── model │ │ │ ├── FishingConfigLoader.java │ │ │ └── FishingLoot.java │ │ ├── event │ │ │ ├── ProgressionFishingEvent.java │ │ │ └── PlayerThrowBaitEvent.java │ │ └── fish │ │ │ └── FishType.java │ ├── mining │ │ └── event │ │ │ └── ProgressionMiningEvent.java │ └── woodcutting │ │ └── event │ │ └── ProgressionWoodcuttingEvent.java │ ├── profile │ └── ProfessionProfile.java │ └── injector │ └── ProgressionInjectorModule.java ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── lombok.config ├── game └── src │ └── main │ ├── resources │ ├── plugin.yml │ └── game-migrations │ │ └── postgres │ │ └── V20251101_1__Intial_game.sql │ └── java │ └── me │ └── mykindos │ └── betterpvp │ └── game │ ├── framework │ ├── model │ │ ├── player │ │ │ └── event │ │ │ │ └── ParticipantEvent.java │ │ ├── Lifecycled.java │ │ ├── attribute │ │ │ └── BoundAttribute.java │ │ └── chat │ │ │ └── GenericColorProvider.java │ ├── event │ │ ├── AcceptingPlayersStateEvent.java │ │ ├── GameStateChangeEvent.java │ │ ├── GameChangeEvent.java │ │ └── PreGameStateChangeEvent.java │ ├── module │ │ └── powerup │ │ │ └── ParticipantPowerupEvent.java │ └── state │ │ └── GameState.java │ ├── guice │ ├── platform │ │ └── PlatformProvider.java │ └── GameScoped.java │ └── database │ └── jooq │ └── Tables.java ├── shops └── src │ └── main │ ├── resources │ ├── plugin.yml │ └── shops-migrations │ │ └── postgres │ │ └── V20250613_1__Update_fish_stocks.sql │ └── java │ └── me │ └── mykindos │ └── betterpvp │ └── shops │ ├── shops │ ├── shopkeepers │ │ ├── data │ │ │ └── ShopType.java │ │ └── types │ │ │ └── IShopkeeper.java │ ├── events │ │ ├── ShopKeeperDespawnEvent.java │ │ └── ShopKeeperSpawnEvent.java │ ├── utilities │ │ └── ShopsNamespacedKeys.java │ └── items │ │ └── data │ │ └── PolynomialData.java │ ├── auctionhouse │ ├── AuctionTransaction.java │ ├── DefaultAuctionDeliveryService.java │ ├── IAuctionDeliveryService.java │ ├── events │ │ ├── AuctionBuyEvent.java │ │ ├── AuctionCancelEvent.java │ │ ├── AuctionCreateEvent.java │ │ └── PlayerPrepareListingEvent.java │ └── data │ │ └── ListingDuration.java │ └── injector │ └── ShopsInjectorModule.java ├── docker ├── init.sql └── docker-compose.yml ├── .github ├── pull_request_template.md └── dependabot.yml ├── lunar └── src │ └── main │ ├── resources │ ├── plugin.yml │ └── configs │ │ └── config.yml │ └── java │ └── me │ └── mykindos │ └── betterpvp │ └── lunar │ └── injector │ └── LunarInjectorModule.java └── .gitignore /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /clans/src/main/resources/configs/items/armor.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /clans/src/main/resources/configs/items/block.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /clans/src/main/resources/configs/items/misc.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /clans/src/main/resources/configs/items/tool.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/src/main/resources/configs/items/armor.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/src/main/resources/configs/items/block.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/src/main/resources/configs/items/misc.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/src/main/resources/configs/items/tool.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/src/main/resources/configs/items/weapon.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /champions/src/main/resources/configs/items/block.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /champions/src/main/resources/configs/items/misc.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /champions/src/main/resources/configs/items/tool.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /clans/src/main/resources/configs/items/consumable.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /clans/src/main/resources/configs/items/material.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/src/main/resources/configs/items/consumable.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/src/main/resources/configs/items/material.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /progression/src/main/resources/configs/items/misc.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /progression/src/main/resources/configs/items/tool.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /champions/src/main/resources/configs/items/consumable.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /champions/src/main/resources/configs/items/material.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /progression/src/main/resources/configs/items/armor.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /progression/src/main/resources/configs/items/block.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /progression/src/main/resources/configs/items/material.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /progression/src/main/resources/configs/items/weapon.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /progression/src/main/resources/configs/items/consumable.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mykindos/BetterPvP/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /lombok.config: -------------------------------------------------------------------------------- 1 | lombok.log.custom.declaration=me.mykindos.betterpvp.core.logging.CustomLogger me.mykindos.betterpvp.core.logging.LoggerFactory.createLogger(TYPE) -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/inviting/Invitable.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.inviting; 2 | 3 | public interface Invitable { 4 | } 5 | -------------------------------------------------------------------------------- /core/src/main/resources/configs/resourcepacks.yml: -------------------------------------------------------------------------------- 1 | packs: 2 | main: 3 | url: https://betterpvp.net/betterpvptextures.zip 4 | hash: 0312dc535a8e00157a9a9192c6f53e92c3bf63a1 -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/CurrentMode.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework; 2 | 3 | public enum CurrentMode { 4 | CLANS, 5 | CHAMPIONS 6 | } 7 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/BuffSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface BuffSkill { 4 | } 5 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/FireSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface FireSkill { 4 | } 5 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/TeamSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface TeamSkill { 4 | } 5 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/WorldSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface WorldSkill { 4 | } 5 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/events/ServerStartEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.events; 2 | 3 | public class ServerStartEvent extends CustomEvent { 4 | } 5 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/DamageSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface DamageSkill { 4 | } 5 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/DebuffSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface DebuffSkill { 4 | } 5 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/HealthSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface HealthSkill { 4 | } 5 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/MovementSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface MovementSkill { 4 | } 5 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/UtilitySkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface UtilitySkill { 4 | } 5 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/insurance/InsuranceType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.insurance; 2 | 3 | public enum InsuranceType { 4 | 5 | BREAK, PLACE 6 | 7 | } 8 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/DefensiveSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface DefensiveSkill { 4 | } 5 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/OffensiveSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface OffensiveSkill { 4 | } 5 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/sidebar/ConditionalSidebarComponent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.sidebar; 2 | 3 | public class ConditionalSidebarComponent { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/logging/LogAppender.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.logging; 2 | 3 | public interface LogAppender { 4 | 5 | void append(PendingLog pendingLog); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /game/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | author: Mykindos 2 | main: me.mykindos.betterpvp.game.GamePlugin 3 | name: Game 4 | load: POSTWORLD 5 | version: '1.0' 6 | depend: [Core, Champions, Mapper] 7 | api-version: '1.21' -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/skill/PerkActivator.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.skill; 2 | 3 | public enum PerkActivator { 4 | AXE 5 | } 6 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/AreaOfEffectSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface AreaOfEffectSkill { 4 | } 5 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/CrowdControlSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface CrowdControlSkill { 4 | } 5 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/sidebar/SidebarType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.sidebar; 2 | 3 | public enum SidebarType { 4 | 5 | GENERAL, 6 | DUNGEONS 7 | 8 | } 9 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/events/EntityProperty.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.events; 2 | 3 | public enum EntityProperty { 4 | ALL, 5 | FRIENDLY, 6 | ENEMY 7 | } 8 | -------------------------------------------------------------------------------- /shops/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | author: Mykindos 2 | main: me.mykindos.betterpvp.shops.Shops 3 | name: Shops 4 | load: POSTWORLD 5 | version: '1.0' 6 | depend: [Core] 7 | softdepend: 8 | - MythicMobs 9 | api-version: '1.21' -------------------------------------------------------------------------------- /docker/init.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE IF NOT EXISTS betterpvp; 2 | CREATE DATABASE IF NOT EXISTS betterpvp_global; 3 | GRANT ALL PRIVILEGES ON betterpvp.* TO 'user'@'%'; 4 | GRANT ALL PRIVILEGES ON betterpvp_global.* TO 'user'@'%'; 5 | -------------------------------------------------------------------------------- /champions/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | author: Mykindos 2 | main: me.mykindos.betterpvp.champions.Champions 3 | name: Champions 4 | load: STARTUP 5 | version: '1.0' 6 | depend: [Core] 7 | api-version: '1.21' 8 | softdepend: 9 | - Shops -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/events/VelocityType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.events; 2 | 3 | public enum VelocityType { 4 | KNOCKBACK, 5 | KNOCKBACK_CUSTOM, 6 | CUSTOM 7 | 8 | } 9 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/champions/SkillType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.champions; 2 | 3 | public enum SkillType { 4 | SWORD, AXE, BOW, PASSIVE_A, PASSIVE_B, GLOBAL; 5 | } 6 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Describe your changes 2 | 3 | ## Link to issue (if applicable) 4 | 5 | ## Checklist before requesting a review 6 | - [ ] I have performed a self-review of my code 7 | - [ ] I have tested my changes. 8 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/loot/chest/DefaultAwardStrategy.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.loot.chest; 2 | 3 | /** 4 | * Instantly awards every loot entry 5 | */ 6 | public class DefaultAwardStrategy { 7 | } 8 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/parties/PartyMemberFilter.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.parties; 2 | 3 | public enum PartyMemberFilter { 4 | 5 | SELF, 6 | CLAN, 7 | CLAN_ALLIES 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/shops/ShopCurrency.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.shops; 2 | 3 | public enum ShopCurrency { 4 | 5 | COINS, 6 | BARK, 7 | FRAGMENTS; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/parties/PartyMemberReadyStatus.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.parties; 2 | 3 | public enum PartyMemberReadyStatus { 4 | 5 | UNKNOWN, 6 | READY, 7 | NOT_READY 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/resourcepack/IResourcePackLoader.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.resourcepack; 2 | 3 | public interface IResourcePackLoader { 4 | 5 | ResourcePack loadResourcePack(String name); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/customtypes/IMapListener.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.customtypes; 2 | 3 | public interface IMapListener { 4 | 5 | void onMapValueChanged(String key, Object value); 6 | } 7 | -------------------------------------------------------------------------------- /progression/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | author: Mykindos, Rey 2 | main: me.mykindos.betterpvp.progression.Progression 3 | name: Progression 4 | load: POSTWORLD 5 | version: '1.0' 6 | api-version: '1.21' 7 | depend: [Core] 8 | softdepend: 9 | - Champions -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/EnergyChannelSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public interface EnergyChannelSkill { 4 | float getEnergy(int level); 5 | } 6 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/properties/ChampionsProperty.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.properties; 2 | 3 | public enum ChampionsProperty { 4 | 5 | SKILL_CHAT_PREVIEW, 6 | SKILL_WEAPON_TOOLTIP 7 | 8 | } 9 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/block/SmartBlockInteractionService.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.block; 2 | 3 | /** 4 | * Service interface for block interactions. 5 | */ 6 | public interface SmartBlockInteractionService { 7 | } 8 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/display/playerlist/PlayerListType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model.display.playerlist; 2 | 3 | public enum PlayerListType { 4 | 5 | HEADER, 6 | FOOTER 7 | 8 | } 9 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/command/IConfirmable.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.command; 2 | 3 | /** 4 | * Used to determine whether a command requires confirmation 5 | */ 6 | public interface IConfirmable { 7 | 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/inventory/util/TriConsumer.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.inventory.util; 2 | 3 | @FunctionalInterface 4 | public interface TriConsumer { 5 | 6 | void accept(A a, B b, C c); 7 | 8 | } 9 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/world/generator/VoidWorldGenerator.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.world.generator; 2 | 3 | import org.bukkit.generator.ChunkGenerator; 4 | 5 | public class VoidWorldGenerator extends ChunkGenerator { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/world/logger/MetadataEntry.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.world.logger; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public class MetadataEntry { 7 | private String Key; 8 | private String Value; 9 | } -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/IProfession.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession; 2 | 3 | public interface IProfession { 4 | 5 | String getName(); 6 | 7 | void loadConfig(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/menu/CooldownButton.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.menu; 2 | 3 | /** 4 | * Represents a menu button that has a cooldown. 5 | */ 6 | public interface CooldownButton { 7 | 8 | double getCooldown(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/inventory/util/MathUtils.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.inventory.util; 2 | 3 | import java.util.Random; 4 | 5 | public class MathUtils { 6 | 7 | public static final Random RANDOM = new Random(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/shops/shopkeepers/data/ShopType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.shops.shopkeepers.data; 2 | 3 | public enum ShopType { 4 | 5 | ARMOUR, 6 | WEAPON, 7 | FARMING, 8 | FRAGMENT, 9 | BUILDING 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shops/src/main/resources/shops-migrations/postgres/V20250613_1__Update_fish_stocks.sql: -------------------------------------------------------------------------------- 1 | UPDATE shopitems_dynamic_pricing 2 | SET base_stock = 25000, max_stock = 50000, current_stock = 25000 3 | WHERE shop_item_id IN (SELECT id FROM shopitems WHERE shopkeeper = 'Fisherman' AND material = 'COD'); -------------------------------------------------------------------------------- /core/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | author: Mykindos 2 | main: me.mykindos.betterpvp.core.Core 3 | name: Core 4 | load: STARTUP 5 | version: '1.0' 6 | api-version: '1.21' 7 | depend: 8 | - packetevents 9 | softdepend: 10 | - MythicMobs 11 | - ModelEngine 12 | - StudioEngine 13 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/command/IConsoleCommand.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.command; 2 | 3 | import org.bukkit.command.CommandSender; 4 | 5 | public interface IConsoleCommand { 6 | 7 | void execute(CommandSender sender, String[] args); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/menu/PreviousableButton.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.menu; 2 | 3 | /** 4 | * Represents a button that stores the previous Window 5 | */ 6 | public interface PreviousableButton { 7 | public void setPrevious(Windowed previous); 8 | } 9 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/ClassType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | public enum ClassType { 4 | ASSASSIN, 5 | MAGE, 6 | KNIGHT, 7 | RANGER, 8 | BRUTE, 9 | WARLOCK 10 | } 11 | -------------------------------------------------------------------------------- /lunar/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | author: Moonsworth LLC Development Team, Mykindos 2 | main: me.mykindos.betterpvp.lunar.Lunar 3 | name: Lunar 4 | load: POSTWORLD 5 | version: '1.0' 6 | api-version: '1.21' 7 | depend: [Core, Apollo-Bukkit] 8 | softdepend: [Clans] 9 | website: https://www.lunarclient.com/ -------------------------------------------------------------------------------- /clans/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | author: Mykindos 2 | main: me.mykindos.betterpvp.clans.Clans 3 | name: Clans 4 | load: POSTWORLD 5 | version: '1.0' 6 | depend: [Core] 7 | api-version: '1.21' 8 | softdepend: 9 | - Progression 10 | - LibsDisguises 11 | - ModelEngine 12 | - Champions 13 | - Shops -------------------------------------------------------------------------------- /core/src/main/resources/core-migrations/postgres/chat/V20250630_1__Create_filtered_words_table.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS filtered_words ( 2 | id SERIAL PRIMARY KEY, 3 | word VARCHAR(255) NOT NULL UNIQUE, 4 | created_at BIGINT NOT NULL, 5 | created_by BIGINT NULL REFERENCES clients(id) 6 | ); 7 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/data/PriorityData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model.data; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class PriorityData { 7 | private final int priority; 8 | private final long instance; 9 | } 10 | 11 | 12 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/inventory/Items.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("PackageDirectoryMismatch") 2 | 3 | package me.mykindos.betterpvp.core.inventory.item 4 | 5 | /** 6 | * Calls [Item.notifyWindows] for all items in this [Iterable]. 7 | */ 8 | fun Iterable.notifyWindows() = forEach { it.notifyWindows() } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/inventory/inventory/StackSizeProvider.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.inventory.inventory; 2 | 3 | import org.bukkit.inventory.ItemStack; 4 | 5 | public interface StackSizeProvider { 6 | 7 | int getMaxStackSize(ItemStack itemStack); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/Unique.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model; 2 | 3 | import java.util.UUID; 4 | 5 | /** 6 | * Represents an entity with a {@link java.util.UUID} 7 | */ 8 | public interface Unique { 9 | 10 | UUID getUniqueId(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/block/impl/DefaultSmartBlockInteractionService.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.block.impl; 2 | 3 | import me.mykindos.betterpvp.core.block.SmartBlockInteractionService; 4 | 5 | public class DefaultSmartBlockInteractionService implements SmartBlockInteractionService { 6 | } 7 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/stats/repository/PlayerData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.stats.repository; 2 | 3 | import net.kyori.adventure.text.Component; 4 | 5 | public abstract class PlayerData extends StatHolder { 6 | 7 | public abstract Component[] getDescription(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/world/logger/WorldLogQueryType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.world.logger; 2 | 3 | /** 4 | * The primary search filter for a WorldLog 5 | */ 6 | public enum WorldLogQueryType { 7 | 8 | BLOCK, 9 | PLAYER, 10 | ACTION, 11 | MATERIAL 12 | 13 | } 14 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/shops/shopkeepers/types/IShopkeeper.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.shops.shopkeepers.types; 2 | 3 | import org.bukkit.entity.Entity; 4 | 5 | public interface IShopkeeper { 6 | 7 | Entity getEntity(); 8 | 9 | String getShopkeeperName(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/annotations/WithReflection.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.annotations; 2 | 3 | /** 4 | * Simply used so I can tell the IDE to ignore unused constructors / methods / fields while also providing a reason as to why 5 | */ 6 | public @interface WithReflection { 7 | } 8 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "gradle" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" # Adjust this to daily, monthly, etc., as needed 7 | groups: 8 | all-dependencies: 9 | patterns: 10 | - "*" # This wildcard includes all dependencies in one group -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/map/data/MapPixel.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.map.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class MapPixel { 9 | 10 | private int colorId; 11 | private short averageY; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/stats/sort/Sorted.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.stats.sort; 2 | 3 | import me.mykindos.betterpvp.core.stats.Leaderboard; 4 | 5 | /** 6 | * Defines a {@link Leaderboard} that can be sorted 7 | */ 8 | public interface Sorted { 9 | 10 | SortType [] acceptedSortTypes(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/auctionhouse/AuctionTransaction.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.auctionhouse; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.UUID; 6 | 7 | @Data 8 | public class AuctionTransaction { 9 | 10 | private final long auctionId; 11 | private final UUID buyer; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/redis/CacheObject.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.redis; 2 | 3 | /** 4 | * Represents an object that's able to be cached in {@link Redis} 5 | */ 6 | public interface CacheObject { 7 | 8 | /** 9 | * @return The key of the object 10 | */ 11 | String getKey(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/resourcepack/exceptions/ResourcePackShaException.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.resourcepack.exceptions; 2 | 3 | public class ResourcePackShaException extends RuntimeException { 4 | 5 | public ResourcePackShaException(String message) { 6 | super(message); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/roles/RoleEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.roles; 2 | 3 | import lombok.Data; 4 | import net.kyori.adventure.text.Component; 5 | 6 | @Data 7 | public class RoleEffect { 8 | private final Component description; 9 | private final boolean isBuff; 10 | } 11 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/EnergySkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | import me.mykindos.betterpvp.core.components.champions.IChampionsSkill; 4 | 5 | public interface EnergySkill extends IChampionsSkill { 6 | 7 | float getEnergy(int level); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/ItemGroup.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item; 2 | 3 | /** 4 | * Enum representing different groups of items in the system. 5 | */ 6 | public enum ItemGroup { 7 | 8 | WEAPON, 9 | ARMOR, 10 | TOOL, 11 | CONSUMABLE, 12 | MATERIAL, 13 | BLOCK, 14 | MISC, 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/logging/menu/button/type/IRefreshButton.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.logging.menu.button.type; 2 | 3 | import java.util.concurrent.CompletableFuture; 4 | import java.util.function.Supplier; 5 | 6 | public interface IRefreshButton { 7 | void setRefresh(Supplier> refresh); 8 | } 9 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/map/data/Coords.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.map.data; 2 | 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class Coords { 10 | 11 | private int x; 12 | private int z; 13 | private String world; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/skill/ProgressionSkillDependency.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.skill; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class ProgressionSkillDependency { 7 | 8 | private final String[] dependencies; 9 | private final int levelsAssigned; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/skills/knight/data/RiposteData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.skills.knight.data; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class RiposteData { 7 | 8 | private final Long boostedAttackTime; 9 | private final double boostedDamage; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/inventory/inventory/event/UpdateReason.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.inventory.inventory.event; 2 | 3 | public interface UpdateReason { 4 | 5 | /** 6 | * An {@link UpdateReason} that suppresses all event calls. 7 | */ 8 | UpdateReason SUPPRESSED = new UpdateReason() {}; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/skills/brute/data/SeismicSlamData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.skills.brute.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class SeismicSlamData { 9 | 10 | private int maxY; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/database/connection/IDatabaseConnection.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.database.connection; 2 | 3 | import javax.sql.DataSource; 4 | 5 | public interface IDatabaseConnection { 6 | 7 | void runDatabaseMigrations(ClassLoader classLoader, String location, String name); 8 | 9 | DataSource getDataSource(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/skills/warlock/data/WreathData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.skills.warlock.data; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class WreathData { 7 | 8 | private int charges = 0; 9 | 10 | public void addCharge(){ 11 | charges++; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/discord/embeds/EmbedFooter.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.discord.embeds; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | @Getter 8 | @Setter 9 | @AllArgsConstructor 10 | public class EmbedFooter 11 | { 12 | private String text; 13 | private String iconUrl; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/resources/core-migrations/postgres/client/V20251027_1__Move_gamer_to_global_db.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS gamer_properties 2 | ( 3 | client BIGINT NOT NULL REFERENCES clients (id) ON DELETE CASCADE, 4 | realm SMALLINT NOT NULL, 5 | property VARCHAR(255) NOT NULL, 6 | value VARCHAR(255) NULL, 7 | PRIMARY KEY (client, realm, property) 8 | ); 9 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/blocktag/BlockTags.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.blocktag; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum BlockTags { 7 | 8 | PLAYER_MANIPULATED("PlayerManipulated"); 9 | 10 | private final String tag; 11 | 12 | BlockTags(String tag) { 13 | this.tag = tag; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/inventory/ItemBuilders.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("PackageDirectoryMismatch") 2 | 3 | package me.mykindos.betterpvp.core.inventory.item.builder 4 | 5 | import net.minecraft.network.chat.Component 6 | 7 | /** 8 | * Sets the lore of the item stack. 9 | */ 10 | fun > T.setLore(lore: List): T = setLore(lore.map { it }) -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/fishing/data/CaughtFish.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.fishing.data; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.UUID; 6 | 7 | @Data 8 | public class CaughtFish { 9 | 10 | private final UUID client; 11 | private final String type; 12 | private final int weight; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/config/Saved.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.config; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.FIELD) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface Saved { 11 | } 12 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/database/repository/IRepository.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.database.repository; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public interface IRepository { 7 | 8 | default List getAll() { 9 | return new ArrayList<>(); 10 | } 11 | 12 | default void save(T object) { 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/description/Describable.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model.description; 2 | 3 | /** 4 | * Represents an entity that can be described in a Menu. 5 | */ 6 | public interface Describable { 7 | 8 | /** 9 | * @return the description of this entity 10 | */ 11 | Description getDescription(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/display/ITimedDisplay.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model.display; 2 | 3 | public interface ITimedDisplay { 4 | long getRemaining(); 5 | 6 | boolean hasStarted(); 7 | 8 | void startTime(); 9 | 10 | double getSeconds(); 11 | 12 | boolean isWaitToExpire(); 13 | 14 | long getStartTime(); 15 | } 16 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/auctionhouse/DefaultAuctionDeliveryService.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.auctionhouse; 2 | 3 | import java.util.UUID; 4 | 5 | public class DefaultAuctionDeliveryService implements IAuctionDeliveryService { 6 | 7 | @Override 8 | public boolean deliverAuction(UUID target, Auction auction) { 9 | return false; 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/discord/embeds/EmbedAuthor.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.discord.embeds; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | @Getter 8 | @Setter 9 | @AllArgsConstructor 10 | public class EmbedAuthor 11 | { 12 | private String name; 13 | private String url; 14 | private String iconUrl; 15 | 16 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/stats/filter/Filtered.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.stats.filter; 2 | 3 | import me.mykindos.betterpvp.core.stats.Leaderboard; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Defines a {@link Leaderboard} that can be filtered 8 | */ 9 | public interface Filtered { 10 | 11 | @NotNull FilterType [] acceptedFilters(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/ToggleSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | 4 | import me.mykindos.betterpvp.core.components.champions.IChampionsSkill; 5 | import org.bukkit.entity.Player; 6 | 7 | public interface ToggleSkill extends IChampionsSkill { 8 | 9 | 10 | void toggle(Player player, int level); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/math/VectorParabola.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.math; 2 | 3 | import java.util.function.DoubleUnaryOperator; 4 | 5 | public class VectorParabola extends Function3d { 6 | 7 | public VectorParabola(DoubleUnaryOperator heightFunction) { 8 | super(Function3d.IDENTITY, heightFunction, Function3d.IDENTITY); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/display/IDisplayObject.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model.display; 2 | 3 | import me.mykindos.betterpvp.core.client.gamer.Gamer; 4 | 5 | import java.util.function.Function; 6 | 7 | public interface IDisplayObject { 8 | Function getProvider(); 9 | void setInvalid(boolean invalid); 10 | boolean isInvalid(); 11 | } 12 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/display/experience/data/ExperienceLevelData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model.display.experience.data; 2 | 3 | import lombok.Getter; 4 | 5 | public class ExperienceLevelData { 6 | @Getter 7 | private final int level; 8 | 9 | public ExperienceLevelData(int level) { 10 | this.level = Math.max(level, 0); 11 | } 12 | } -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanEnemyEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.clans.clans.Clan; 4 | import org.bukkit.entity.Player; 5 | 6 | public class ClanEnemyEvent extends ClanRelationshipEvent { 7 | public ClanEnemyEvent(Player player, Clan clan, Clan targetClan) { 8 | super(player, clan, targetClan); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanTrustEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.clans.clans.Clan; 4 | import org.bukkit.entity.Player; 5 | 6 | public class ClanTrustEvent extends ClanRelationshipEvent { 7 | public ClanTrustEvent(Player player, Clan clan, Clan targetClan) { 8 | super(player, clan, targetClan); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/stats/repository/StatHolder.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.stats.repository; 2 | 3 | import me.mykindos.betterpvp.core.database.Database; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | import java.util.UUID; 7 | 8 | public abstract class StatHolder { 9 | 10 | protected abstract void prepareUpdates(@NotNull UUID uuid, @NotNull Database database); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanAllianceEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.clans.clans.Clan; 4 | import org.bukkit.entity.Player; 5 | 6 | public class ClanAllianceEvent extends ClanRelationshipEvent { 7 | public ClanAllianceEvent(Player player, Clan clan, Clan targetClan) { 8 | super(player, clan, targetClan); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanNeutralEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.clans.clans.Clan; 4 | import org.bukkit.entity.Player; 5 | 6 | public class ClanNeutralEvent extends ClanRelationshipEvent { 7 | public ClanNeutralEvent(Player player, Clan clan, Clan targetClan) { 8 | super(player, clan, targetClan); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanUntrustEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.clans.clans.Clan; 4 | import org.bukkit.entity.Player; 5 | 6 | public class ClanUntrustEvent extends ClanRelationshipEvent { 7 | public ClanUntrustEvent(Player player, Clan clan, Clan targetClan) { 8 | super(player, clan, targetClan); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/hat/HatProvider.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.hat; 2 | 3 | import org.bukkit.entity.Player; 4 | import org.bukkit.inventory.ItemStack; 5 | 6 | import java.util.function.Function; 7 | 8 | @FunctionalInterface 9 | public interface HatProvider extends Function { 10 | 11 | @Override 12 | ItemStack apply(Player player); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/PassiveSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | import me.mykindos.betterpvp.core.components.champions.IChampionsSkill; 4 | import org.bukkit.event.Listener; 5 | 6 | public interface PassiveSkill extends IChampionsSkill, Listener { 7 | default boolean enabledInSpectator() { 8 | return false; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/adapters/CustomDamageAdapter.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.adapters; 2 | 3 | import me.mykindos.betterpvp.core.combat.events.DamageEvent; 4 | 5 | public interface CustomDamageAdapter { 6 | 7 | boolean isValid(DamageEvent event); 8 | boolean processPreCustomDamage(DamageEvent event); 9 | boolean processCustomDamageAdapter(DamageEvent event); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/world/logger/formatters/WorldLogFormatter.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.world.logger.formatters; 2 | 3 | import me.mykindos.betterpvp.core.world.logger.WorldLog; 4 | import net.kyori.adventure.text.Component; 5 | 6 | public interface WorldLogFormatter { 7 | 8 | String requiredAction(); 9 | 10 | Component getPrefix(); 11 | 12 | Component format(WorldLog log); 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/inventory/adventure/AdventureWindows.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("PackageDirectoryMismatch") 2 | 3 | package me.mykindos.betterpvp.core.inventory.window 4 | 5 | import me.mykindos.betterpvp.core.inventory.inventoryaccess.component.AdventureComponentWrapper 6 | import net.kyori.adventure.text.Component 7 | 8 | fun Window.changeTitle(title: Component) { 9 | changeTitle(AdventureComponentWrapper(title)) 10 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/component/impl/ability/serialization/ItemAbilitySerializer.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.component.impl.ability.serialization; 2 | 3 | import me.mykindos.betterpvp.core.item.component.impl.ability.ItemAbility; 4 | import me.mykindos.betterpvp.core.item.serialization.CustomSerializer; 5 | 6 | public interface ItemAbilitySerializer extends CustomSerializer { 7 | } 8 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/logging/menu/button/type/IStringFilterButton.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.logging.menu.button.type; 2 | 3 | import java.util.List; 4 | 5 | public interface IStringFilterButton extends IRefreshButton{ 6 | void add(String newFilter); 7 | 8 | List getContexts(); 9 | 10 | String getSelectedFilter(); 11 | 12 | void setSelectedFilter(String selectedFilter); 13 | } 14 | -------------------------------------------------------------------------------- /progression/src/main/resources/configs/professions/mining.yml: -------------------------------------------------------------------------------- 1 | skills: 2 | smelter: 3 | enabled: true 4 | maxlevel: 250 5 | smeltChanceIncreasePerLvl: 0.36 6 | gold_rush: 7 | enabled: true 8 | maxlevel: 250 9 | coinsChanceIncreasePerLvl: 0.08 10 | minCoinsFound: 100 11 | maxCoinsFound: 5000 12 | vein_vindicator: 13 | enabled: true 14 | maxlevel: 250 15 | chanceToNotConsumeIncreasePerLevel: 0.08 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/discord/embeds/EmbedField.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.discord.embeds; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @Builder 11 | @AllArgsConstructor 12 | public class EmbedField 13 | { 14 | private String name; 15 | private String value; 16 | private boolean inline; 17 | 18 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/loot/ReplacementStrategy.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.loot; 2 | 3 | /** 4 | * Represents the strategy to use when a loot entry is replaced. 5 | */ 6 | public enum ReplacementStrategy { 7 | UNSET, 8 | WITH_REPLACEMENT, 9 | WITHOUT_REPLACEMENT; 10 | 11 | public ReplacementStrategy orElse(ReplacementStrategy other) { 12 | return this == UNSET ? other : this; 13 | } 14 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/data/CustomDataType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model.data; 2 | 3 | import lombok.experimental.UtilityClass; 4 | import org.bukkit.persistence.PersistentDataType; 5 | 6 | import java.util.UUID; 7 | 8 | @UtilityClass 9 | public class CustomDataType { 10 | 11 | public static final PersistentDataType UUID = new PersistentUUIDType(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/framework/model/player/event/ParticipantEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.framework.model.player.event; 2 | 3 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 4 | import me.mykindos.betterpvp.game.framework.model.player.Participant; 5 | 6 | /** 7 | * Represents an event involving a {@link Participant} 8 | */ 9 | public class ParticipantEvent extends CustomEvent { 10 | } 11 | -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profile/ProfessionProfile.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profile; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.HashMap; 6 | import java.util.Map; 7 | import java.util.UUID; 8 | 9 | @Data 10 | public class ProfessionProfile { 11 | 12 | private final UUID gamerUUID; 13 | private Map professionDataMap = new HashMap<>(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/data/SkillActions.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.data; 2 | 3 | import org.bukkit.event.block.Action; 4 | 5 | public class SkillActions { 6 | 7 | public static final Action[] RIGHT_CLICK = {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}; 8 | public static final Action[] LEFT_CLICK = {Action.LEFT_CLICK_AIR, Action.LEFT_CLICK_BLOCK}; 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/client/punishments/types/RevokeType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.client.punishments.types; 2 | 3 | public enum RevokeType { 4 | /** 5 | * Indicates this punishment was in error in some way and should be removed completely 6 | */ 7 | INCORRECT, 8 | /** 9 | * Indicates this punishment was valid, but is being reduced/terminated earlier 10 | */ 11 | APPEAL 12 | } 13 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/component/impl/ability/serialization/ItemAbilityDeserializer.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.component.impl.ability.serialization; 2 | 3 | import me.mykindos.betterpvp.core.item.component.impl.ability.ItemAbility; 4 | import me.mykindos.betterpvp.core.item.serialization.CustomDeserializer; 5 | 6 | public interface ItemAbilityDeserializer extends CustomDeserializer { 7 | } 8 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/Reloadable.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model; 2 | 3 | /** 4 | * A marker interface to indicate that this class must be invoked whenever the 5 | * owning plugin is reloaded. 6 | */ 7 | @FunctionalInterface 8 | public interface Reloadable { 9 | 10 | /** 11 | * Reloads the configuration or state of this class. 12 | */ 13 | void reload(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/client/gamer/exceptions/NoSuchGamerException.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.client.gamer.exceptions; 2 | 3 | import java.util.UUID; 4 | 5 | public class NoSuchGamerException extends RuntimeException { 6 | 7 | public NoSuchGamerException(String message){ 8 | super(message); 9 | } 10 | 11 | public NoSuchGamerException(UUID uuid){ 12 | super(uuid.toString()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/ModuleLoadedEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework; 2 | 3 | 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Data 10 | public class ModuleLoadedEvent extends CustomCancellableEvent { 11 | 12 | private final String moduleName; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/framework/model/Lifecycled.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.framework.model; 2 | 3 | /** 4 | * Represents an entity with a start and stop 5 | */ 6 | public interface Lifecycled { 7 | 8 | /** 9 | * Called when the entity is being loaded 10 | */ 11 | void setup(); 12 | 13 | /** 14 | * Called when the entity is being unloaded 15 | */ 16 | void tearDown(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /progression/src/main/resources/configs/professions/fishing.yml: -------------------------------------------------------------------------------- 1 | skills: 2 | base_fishing: 3 | enabled: true 4 | maxlevel: 1 5 | no_more_mobs: 6 | enabled: true 7 | maxlevel: 1 8 | thicker_lines: 9 | enabled: true 10 | maxlevel: 250 11 | feeling_lucky: 12 | enabled: true 13 | maxlevel: 250 14 | expert_baiter: 15 | enabled: true 16 | maxlevel: 250 17 | swiftness: 18 | enabled: true 19 | maxlevel: 250 20 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/auctionhouse/IAuctionDeliveryService.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.auctionhouse; 2 | 3 | import java.util.UUID; 4 | 5 | public interface IAuctionDeliveryService { 6 | 7 | default boolean deliverAuction(UUID target, Auction auction) { 8 | return false; 9 | } 10 | 11 | default boolean deliverCurrency(UUID target, int amount) { 12 | return false; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/display/experience/data/ExperienceBarData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model.display.experience.data; 2 | 3 | import lombok.Getter; 4 | 5 | public class ExperienceBarData { 6 | @Getter 7 | private final float percentage; 8 | 9 | public ExperienceBarData(float percentage) { 10 | this.percentage = Math.max(Math.min(0.9999999f, percentage), 0.000f); 11 | } 12 | } -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/framework/model/attribute/BoundAttribute.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.framework.model.attribute; 2 | 3 | /** 4 | * An attribute that is bound to a game instance. 5 | * @param the type of the attribute 6 | */ 7 | public abstract class BoundAttribute extends GameAttribute { 8 | 9 | protected BoundAttribute(String key, T defaultValue) { 10 | super(key, defaultValue); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/stats/model/Contribution.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.stats.model; 2 | 3 | import lombok.Value; 4 | import org.jetbrains.annotations.Range; 5 | 6 | import java.util.UUID; 7 | 8 | @Value 9 | public class Contribution { 10 | 11 | long id; 12 | UUID contributor; 13 | @Range(from = 0, to = Integer.MAX_VALUE) float damage; 14 | @Range(from = 0, to = 1) float percentage; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/clans/data/ClanTerritory.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.clans.data; 2 | 3 | import lombok.Data; 4 | import me.mykindos.betterpvp.core.utilities.UtilWorld; 5 | import org.bukkit.Chunk; 6 | 7 | @Data 8 | public class ClanTerritory { 9 | 10 | private final String chunk; 11 | 12 | public Chunk getWorldChunk(){ 13 | return UtilWorld.stringToChunk(chunk); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/delayedactions/DelayedAction.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.delayedactions; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class DelayedAction { 7 | 8 | private final Runnable runnable; 9 | private final long time; 10 | 11 | private String titleText; 12 | private String subtitleText; 13 | private boolean countdown; 14 | private String countdownText; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/command/SubCommand.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.command; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.TYPE) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface SubCommand { 11 | 12 | Class value(); 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/positive/JumpEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.positive; 2 | 3 | import me.mykindos.betterpvp.core.effects.EffectType; 4 | 5 | public class JumpEffect extends EffectType { 6 | 7 | @Override 8 | public String getName() { 9 | return "Jump"; 10 | } 11 | 12 | @Override 13 | public boolean isNegative() { 14 | return false; 15 | } 16 | 17 | } 18 | 19 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/shops/events/ShopKeeperDespawnEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.shops.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 6 | import org.bukkit.entity.Entity; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Data 10 | public class ShopKeeperDespawnEvent extends CustomEvent { 11 | 12 | private final Entity entity; 13 | } 14 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/skills/assassin/data/ComboAttackData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.skills.assassin.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | import java.util.UUID; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class ComboAttackData { 11 | private UUID lastTarget; 12 | private double damageIncrement; 13 | private long last; 14 | } 15 | 16 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/utilities/ChampionsNamespacedKeys.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.utilities; 2 | 3 | import org.bukkit.NamespacedKey; 4 | 5 | public class ChampionsNamespacedKeys { 6 | 7 | public static final NamespacedKey HYPER_AXE_SPEED = new NamespacedKey("champions", "hyper-axe-speed"); 8 | public static final NamespacedKey HYPER_AXE_DURATION = new NamespacedKey("champions", "hyper-axe-duration"); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/MemberJoinClanEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.clans.clans.Clan; 4 | import me.mykindos.betterpvp.core.components.clans.events.ClanEvent; 5 | import org.bukkit.entity.Player; 6 | 7 | public class MemberJoinClanEvent extends ClanEvent { 8 | public MemberJoinClanEvent(Player player, Clan clan) { 9 | super(player, clan); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /clans/src/main/resources/configs/items/weapon.yml: -------------------------------------------------------------------------------- 1 | cannon: 2 | enabled: true 3 | health: 20.0 4 | spawn-cooldown: 30.0 5 | shoot-cooldown: 5.0 6 | fuse-seconds: 2.5 7 | cannonball-damage: 15.0 8 | cannonball-alive-seconds: 2.0 9 | cannonball-velocity-strength: 1.8 10 | block-collision-explode: true 11 | entity-collision-explode: true 12 | size: 1.0 13 | cannonball-damage-max-radius: 4.0 14 | cannonball-damage-min-radius: 1.0 15 | cannonball-min-damage: 4.0 -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/inventory/util/Point2D.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.inventory.util; 2 | 3 | public class Point2D { 4 | 5 | private int x; 6 | private int y; 7 | 8 | public Point2D(int x, int y) { 9 | this.x = x; 10 | this.y = y; 11 | } 12 | 13 | public int getX() { 14 | return x; 15 | } 16 | 17 | public int getY() { 18 | return y; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/listener/BPvPListener.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.listener; 2 | 3 | import com.google.inject.Singleton; 4 | 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | @Singleton 11 | @Target(ElementType.TYPE) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | public @interface BPvPListener { 14 | } 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | *.iml 25 | 26 | *.idea 27 | *.gradle 28 | .kotlin 29 | build/ 30 | /private/ 31 | **/bin/ 32 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/skills/assassin/data/FlashData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.skills.assassin.data; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class FlashData { 7 | 8 | private int charges = 0; 9 | 10 | public void useCharge(){ 11 | charges = Math.max(0, charges - 1); 12 | } 13 | 14 | public void addCharge(){ 15 | charges++; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/MemberLeaveClanEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.clans.clans.Clan; 4 | import me.mykindos.betterpvp.core.components.clans.events.ClanEvent; 5 | import org.bukkit.entity.Player; 6 | 7 | public class MemberLeaveClanEvent extends ClanEvent { 8 | public MemberLeaveClanEvent(Player player, Clan clan) { 9 | super(player, clan); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/click/events/RightClickEndEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.click.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 6 | import org.bukkit.entity.Player; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Data 10 | public class RightClickEndEvent extends CustomEvent { 11 | 12 | private final Player player; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/negative/NoSprintEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.negative; 2 | 3 | import me.mykindos.betterpvp.core.effects.EffectType; 4 | 5 | public class NoSprintEffect extends EffectType { 6 | 7 | @Override 8 | public String getName() { 9 | return "No Sprint"; 10 | } 11 | 12 | @Override 13 | public boolean isNegative() { 14 | return true; 15 | } 16 | 17 | } 18 | 19 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/stats/sort/SortType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.stats.sort; 2 | 3 | import me.mykindos.betterpvp.core.stats.Leaderboard; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Defines parameters to sort the search of a {@link Leaderboard} 8 | */ 9 | public interface SortType { 10 | 11 | @NotNull String getName(); 12 | 13 | default boolean accepts(Object entry) { 14 | return true; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/UtilUUID.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities; 2 | 3 | import org.jetbrains.annotations.Nullable; 4 | 5 | import java.util.UUID; 6 | 7 | public class UtilUUID { 8 | private UtilUUID() { 9 | } 10 | @Nullable 11 | public static UUID fromString(@Nullable String id) { 12 | if (id == null) { 13 | return null; 14 | } 15 | return UUID.fromString(id); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/display/IDisplayQueue.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model.display; 2 | 3 | import me.mykindos.betterpvp.core.client.gamer.Gamer; 4 | 5 | public interface IDisplayQueue { 6 | void add(int priority, T element); 7 | 8 | void remove(T element); 9 | 10 | void clear(); 11 | 12 | boolean hasElementsQueued(); 13 | 14 | void show(Gamer gamer); 15 | 16 | void cleanUp(); 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/world/logger/WorldLogAction.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.world.logger; 2 | 3 | public enum WorldLogAction { 4 | BLOCK_BREAK, 5 | BLOCK_PLACE, 6 | BLOCK_EXPLODE, 7 | BLOCK_DISPENSE, 8 | BLOCK_DROP_ITEM, 9 | BLOCK_PICKUP_ITEM, 10 | BLOCK_MOVE_ITEM, 11 | ITEM_DEPSAWN, 12 | ENTITY_DROP_ITEM, 13 | ENTITY_PICKUP_ITEM, 14 | CONTAINER_DEPOSIT_ITEM, 15 | CONTAINER_WITHDRAW_ITEM, 16 | } 17 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/types/InteractSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.types; 2 | 3 | import me.mykindos.betterpvp.core.components.champions.IChampionsSkill; 4 | import org.bukkit.entity.Player; 5 | import org.bukkit.event.block.Action; 6 | 7 | public interface InteractSkill extends IChampionsSkill { 8 | 9 | void activate(Player player, int level); 10 | 11 | Action[] getActions(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanBannerUpdateEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import lombok.Getter; 4 | import lombok.RequiredArgsConstructor; 5 | import me.mykindos.betterpvp.clans.clans.Clan; 6 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 7 | 8 | @RequiredArgsConstructor 9 | @Getter 10 | public class ClanBannerUpdateEvent extends CustomEvent { 11 | 12 | private final Clan clan; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/positive/AttackSpeedEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.positive; 2 | 3 | import me.mykindos.betterpvp.core.effects.EffectType; 4 | 5 | public class AttackSpeedEffect extends EffectType { 6 | 7 | @Override 8 | public String getName() { 9 | return "Attack Speed"; 10 | } 11 | 12 | @Override 13 | public boolean isNegative() { 14 | return false; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/stats/LeaderboardCategory.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.stats; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum LeaderboardCategory { 7 | 8 | CLANS("Clans"), 9 | 10 | CHAMPIONS("Champions"), 11 | 12 | PROFESSION("Professions"), 13 | 14 | DUNGEONS("Dungeons"); 15 | 16 | private final String name; 17 | 18 | LeaderboardCategory(String name) { 19 | this.name = name; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/world/logger/WorldLogSession.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.world.logger; 2 | 3 | import lombok.Data; 4 | import org.bukkit.block.Block; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | public class WorldLogSession { 10 | 11 | public Block block; 12 | public WorldLogQueryType queryType = WorldLogQueryType.BLOCK; 13 | public int pages; 14 | public int currentPage = 1; 15 | public List data; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/skill/IProgressionSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.skill; 2 | 3 | import me.mykindos.betterpvp.core.skill.ISkill; 4 | 5 | import javax.annotation.Nullable; 6 | 7 | public interface IProgressionSkill extends ISkill { 8 | 9 | default @Nullable ProgressionSkillDependency getDependencies() { 10 | return null; 11 | } 12 | 13 | String getProgressionTree(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/skills/ranger/data/StackingHitData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.skills.ranger.data; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class StackingHitData { 7 | 8 | private int charge; 9 | private long lastHit = System.currentTimeMillis(); 10 | 11 | public void addCharge(){ 12 | charge++; 13 | lastHit = System.currentTimeMillis(); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/scheduler/TaskScheduler.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.scheduler; 2 | 3 | import com.google.inject.Singleton; 4 | import lombok.Getter; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | @Singleton 10 | @Getter 11 | public class TaskScheduler { 12 | 13 | private final List tasks = new ArrayList<>(); 14 | 15 | public void addTask(BPVPTask task) { 16 | tasks.add(task); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/stats/filter/FilterType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.stats.filter; 2 | 3 | import me.mykindos.betterpvp.core.stats.Leaderboard; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Defines parameters to reduce the search of a {@link Leaderboard} 8 | */ 9 | public interface FilterType { 10 | 11 | @NotNull String getName(); 12 | 13 | default boolean accepts(Object entry) { 14 | return true; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/chat/channels/IChatChannel.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.chat.channels; 2 | 3 | import me.mykindos.betterpvp.core.client.Rank; 4 | import org.bukkit.entity.Player; 5 | 6 | import java.util.Collection; 7 | 8 | public interface IChatChannel { 9 | 10 | ChatChannel getChannel(); 11 | 12 | Collection getAudience(); 13 | 14 | default Rank getRequiredRank() { 15 | return Rank.PLAYER; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/chat/filter/IFilterService.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.chat.filter; 2 | 3 | import net.kyori.adventure.text.Component; 4 | 5 | import java.util.concurrent.CompletableFuture; 6 | 7 | public interface IFilterService { 8 | 9 | CompletableFuture isFiltered(String message); 10 | 11 | CompletableFuture filterMessage(String message); 12 | 13 | CompletableFuture filterMessage(Component message); 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/positive/EnergyReductionEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.positive; 2 | 3 | import me.mykindos.betterpvp.core.effects.EffectType; 4 | 5 | public class EnergyReductionEffect extends EffectType { 6 | 7 | @Override 8 | public String getName() { 9 | return "Energy Reduction"; 10 | } 11 | 12 | @Override 13 | public boolean isNegative() { 14 | return false; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/clans/data/ClanAlliance.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.clans.data; 2 | 3 | import lombok.Data; 4 | import me.mykindos.betterpvp.core.components.clans.IClan; 5 | 6 | @Data 7 | public class ClanAlliance { 8 | 9 | private final IClan clan; 10 | private boolean trusted; 11 | 12 | public ClanAlliance(IClan clan, boolean trusted){ 13 | this.clan = clan; 14 | this.trusted = trusted; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/EnergyCheckEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.clans.clans.Clan; 5 | import me.mykindos.betterpvp.core.components.clans.events.ClanEvent; 6 | import org.bukkit.entity.Player; 7 | 8 | @Getter 9 | public class EnergyCheckEvent extends ClanEvent { 10 | public EnergyCheckEvent(Player player, Clan clan) { 11 | super(player, clan); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/data/DamageData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.data; 2 | 3 | import lombok.Data; 4 | import org.bukkit.event.entity.EntityDamageEvent; 5 | 6 | @Data 7 | public class DamageData { 8 | 9 | private final String uuid; 10 | private final EntityDamageEvent.DamageCause cause; 11 | private final String damager; 12 | private final long damageDelay; 13 | private final long timeOfDamage = System.currentTimeMillis(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/positive/CooldownReductionEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.positive; 2 | 3 | import me.mykindos.betterpvp.core.effects.EffectType; 4 | 5 | public class CooldownReductionEffect extends EffectType { 6 | 7 | @Override 8 | public String getName() { 9 | return "Cooldown Reduction"; 10 | } 11 | 12 | @Override 13 | public boolean isNegative() { 14 | return false; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/loot/chest/SmallLootChest.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.loot.chest; 2 | 3 | import me.mykindos.betterpvp.core.utilities.model.SoundEffect; 4 | 5 | public final class SmallLootChest extends LootChest { 6 | 7 | public SmallLootChest() { 8 | this("Chest_Wooden"); 9 | } 10 | 11 | public SmallLootChest(String mythicMobName) { 12 | super(mythicMobName, new SoundEffect("betterpvp", "chest.drop-item"), 15, 4); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/loot/loader/LootTableLoader.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.loot.loader; 2 | 3 | import me.mykindos.betterpvp.core.loot.LootTable; 4 | 5 | import java.util.Collection; 6 | 7 | /** 8 | * Interface for loading loot tables. 9 | */ 10 | @FunctionalInterface 11 | public interface LootTableLoader { 12 | 13 | /** 14 | * Loads loot tables. 15 | * @return The loaded loot tables. 16 | */ 17 | Collection load(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/metal/casting/IngotCastingMold.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.metal.casting; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.Singleton; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | 7 | @Singleton 8 | @ItemKey("core:ingot_casting_mold") 9 | public class IngotCastingMold extends CastingMold { 10 | 11 | @Inject 12 | private IngotCastingMold() { 13 | super("Ingot Casting Mold", "ingot"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/skill/ISkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.skill; 2 | 3 | import net.kyori.adventure.text.Component; 4 | 5 | public interface ISkill { 6 | 7 | String getName(); 8 | 9 | String[] getDescription(int level); 10 | 11 | default int getMaxLevel() { 12 | return 5; 13 | } 14 | 15 | boolean isEnabled(); 16 | 17 | void loadConfig(); 18 | 19 | default Component getTags() { 20 | return null; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/stats/event/LeaderboardInitializeEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.stats.event; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 6 | import me.mykindos.betterpvp.core.stats.Leaderboard; 7 | 8 | @AllArgsConstructor 9 | @Getter 10 | public class LeaderboardInitializeEvent extends CustomEvent { 11 | 12 | private final Leaderboard leaderboard; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/events/EffectClearEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.events; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 5 | import org.bukkit.entity.Player; 6 | 7 | @Getter 8 | public class EffectClearEvent extends CustomCancellableEvent { 9 | 10 | private final Player player; 11 | 12 | public EffectClearEvent(Player player) { 13 | this.player = player; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/MemberDemoteEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.clans.clans.Clan; 4 | import me.mykindos.betterpvp.core.components.clans.data.ClanMember; 5 | import org.bukkit.entity.Player; 6 | 7 | public class MemberDemoteEvent extends MemberRankEvent { 8 | 9 | public MemberDemoteEvent(Player player, Clan clan, ClanMember clanMember) { 10 | super(player, clan, clanMember); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/npc/KitSelectorUseEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.npc; 2 | 3 | import lombok.EqualsAndHashCode; 4 | import lombok.Value; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import org.bukkit.entity.Player; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Value 10 | public class KitSelectorUseEvent extends CustomCancellableEvent { 11 | Player player; 12 | KitSelector kitSelector; 13 | } 14 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/skills/brute/data/StampedeData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.skills.brute.data; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class StampedeData { 7 | 8 | private long sprintTime; 9 | 10 | private int sprintStrength; 11 | 12 | public StampedeData(long sprintTime, int sprintStrength) { 13 | this.sprintTime = sprintTime; 14 | this.sprintStrength = sprintStrength; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanDominanceChangeEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.core.components.clans.IClan; 4 | import me.mykindos.betterpvp.core.components.clans.events.ClanEvent; 5 | import org.bukkit.entity.Player; 6 | 7 | 8 | public class ClanDominanceChangeEvent extends ClanEvent { 9 | 10 | public ClanDominanceChangeEvent(Player player, IClan clan) { 11 | super(player, clan); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/MemberPromoteEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.clans.clans.Clan; 4 | import me.mykindos.betterpvp.core.components.clans.data.ClanMember; 5 | import org.bukkit.entity.Player; 6 | 7 | public class MemberPromoteEvent extends MemberRankEvent { 8 | 9 | public MemberPromoteEvent(Player player, Clan clan, ClanMember clanMember) { 10 | super(player, clan, clanMember); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/resources/core-migrations/postgres/logging/V20250610_1__Move_block_tagging_to_global.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS chunk_block_tagging 2 | ( 3 | realm SMALLINT NOT NULL, 4 | chunk VARCHAR(255) NOT NULL, 5 | block_key BIGINT NOT NULL, 6 | tag VARCHAR(255) NOT NULL, 7 | value VARCHAR(255) NULL, 8 | last_updated BIGINT NOT NULL, 9 | CONSTRAINT chunk_block_tagging_uk UNIQUE (realm, chunk, block_key, tag) 10 | ) PARTITION BY LIST (realm); 11 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/champions/events/PlayerUseToggleSkillEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.champions.events; 2 | 3 | 4 | import me.mykindos.betterpvp.core.components.champions.IChampionsSkill; 5 | import org.bukkit.entity.Player; 6 | 7 | 8 | public class PlayerUseToggleSkillEvent extends PlayerUseSkillEvent { 9 | 10 | public PlayerUseToggleSkillEvent(Player player, IChampionsSkill skill, int level) { 11 | super(player, skill, level); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/Loader.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | @Getter 7 | @Setter 8 | public abstract class Loader { 9 | 10 | protected BPvPPlugin plugin; 11 | protected int count; 12 | 13 | public Loader(BPvPPlugin plugin) { 14 | this.plugin = plugin; 15 | } 16 | 17 | public abstract void load(Class clazz); 18 | 19 | public void reload(String packageName) {} 20 | 21 | } 22 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/framework/event/AcceptingPlayersStateEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.framework.event; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 5 | 6 | @Getter 7 | public class AcceptingPlayersStateEvent extends CustomEvent { 8 | 9 | private final boolean acceptingPlayers; 10 | 11 | public AcceptingPlayersStateEvent(boolean acceptingPlayers) { 12 | this.acceptingPlayers = acceptingPlayers; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/shops/utilities/ShopsNamespacedKeys.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.shops.utilities; 2 | 3 | import org.bukkit.NamespacedKey; 4 | 5 | public class ShopsNamespacedKeys { 6 | 7 | public static final NamespacedKey SHOP_ITEM = new NamespacedKey("shops", "shop_item"); 8 | public static final NamespacedKey SHOP_CURRENCY = new NamespacedKey("shops", "shop_currency"); 9 | public static final NamespacedKey SHOPKEEPER = new NamespacedKey("shops", "shopkeeper"); 10 | } 11 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/block/impl/workbench/WorkbenchData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.block.impl.workbench; 2 | 3 | import me.mykindos.betterpvp.core.block.data.impl.StorageBlockData; 4 | import me.mykindos.betterpvp.core.item.ItemInstance; 5 | 6 | import java.util.List; 7 | 8 | public class WorkbenchData extends StorageBlockData { 9 | WorkbenchData(List content) { 10 | super(content); 11 | } 12 | 13 | WorkbenchData() { 14 | super(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/modifiers/DamageOperator.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.modifiers; 2 | 3 | /** 4 | * Represents how a modifier value should be applied. 5 | */ 6 | public enum DamageOperator { 7 | 8 | /** 9 | * Adds or subtracts a flat value 10 | */ 11 | FLAT, 12 | 13 | /** 14 | * Multiplies the damage by a factor, 15 | * additively in the case of increase and multiplicatively in the case of decrease 16 | */ 17 | MULTIPLIER 18 | 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/champions/events/PlayerUseInteractSkillEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.champions.events; 2 | 3 | 4 | import me.mykindos.betterpvp.core.components.champions.IChampionsSkill; 5 | import org.bukkit.entity.Player; 6 | 7 | 8 | public class PlayerUseInteractSkillEvent extends PlayerUseSkillEvent { 9 | 10 | public PlayerUseInteractSkillEvent(Player player, IChampionsSkill skill, int level) { 11 | super(player, skill, level); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/client/exception/ClientNotLoadedException.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.client.exception; 2 | 3 | import org.bukkit.entity.Player; 4 | 5 | public class ClientNotLoadedException extends RuntimeException { 6 | 7 | public ClientNotLoadedException(Player player) { 8 | super(String.format("Player was online but client is not currently loaded in storage. They were kicked from the server (Name: %s | UUID: %s)", player.getName(), player.getUniqueId())); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/positive/ImmuneEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.positive; 2 | 3 | import me.mykindos.betterpvp.core.effects.EffectType; 4 | 5 | /** 6 | * Provides immunity to negative effects 7 | */ 8 | public class ImmuneEffect extends EffectType { 9 | 10 | @Override 11 | public String getName() { 12 | return "Immune"; 13 | } 14 | 15 | @Override 16 | public boolean isNegative() { 17 | return false; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/loot/chest/BigLootChest.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.loot.chest; 2 | 3 | import me.mykindos.betterpvp.core.utilities.model.SoundEffect; 4 | 5 | public final class BigLootChest extends LootChest { 6 | 7 | public BigLootChest() { 8 | this("bpvp_loot_chest"); 9 | } 10 | 11 | public BigLootChest(String mythicMobName) { 12 | super(mythicMobName, new SoundEffect("littleroom_piratepack", "littleroom.piratepack.captain_chest_item"), 30, 10); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/resources/core-migrations/postgres/items/V20250625_1__Create_smart_block_data_table.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS smart_block_data ( 2 | realm SMALLINT NOT NULL, 3 | world VARCHAR(255) NOT NULL, 4 | chunk_key BIGINT NOT NULL, 5 | block_key BIGINT NOT NULL, 6 | block_type VARCHAR(255) NOT NULL, 7 | data_type_class VARCHAR(255) NOT NULL, 8 | data BYTEA NOT NULL, 9 | PRIMARY KEY (realm, world, chunk_key, block_key) 10 | ); -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/block/nexo/NexoBlock.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.block.nexo; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | /** 6 | * Represents a block translated from Nexo to BetterPVP. 7 | */ 8 | @FunctionalInterface 9 | public interface NexoBlock { 10 | 11 | /** 12 | * Returns the unique identifier of this block. 13 | * This must be the same as the Nexo ID. 14 | * 15 | * @return the unique identifier 16 | */ 17 | @NotNull String getId(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/clans/events/ClanAddExperienceEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.clans.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 6 | import org.bukkit.entity.Player; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Data 10 | public class ClanAddExperienceEvent extends CustomEvent { 11 | 12 | private final Player player; 13 | private final double experience; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanDisbandEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import lombok.EqualsAndHashCode; 4 | import me.mykindos.betterpvp.clans.clans.Clan; 5 | import me.mykindos.betterpvp.core.components.clans.events.ClanEvent; 6 | import org.bukkit.entity.Player; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | public class ClanDisbandEvent extends ClanEvent { 10 | 11 | public ClanDisbandEvent(Player player, Clan clan) { 12 | super(player, clan); 13 | } 14 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/stats/model/ICombatDataAttachment.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.stats.model; 2 | 3 | import me.mykindos.betterpvp.core.database.Database; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Represents an attachment to a {@link CombatData} object. 8 | */ 9 | public interface ICombatDataAttachment { 10 | 11 | void prepareUpdates(@NotNull CombatData data, @NotNull Database database); 12 | 13 | void onKill(@NotNull CombatData data, Kill kill); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/inventory/gui/structure/Marker.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.inventory.gui.structure; 2 | 3 | /** 4 | * Used to mark slots in a {@link Structure} as special slots. 5 | * 6 | * @see Markers 7 | */ 8 | public class Marker { 9 | 10 | private final boolean horizontal; 11 | 12 | public Marker(boolean horizontal) { 13 | this.horizontal = horizontal; 14 | } 15 | 16 | public boolean isHorizontal() { 17 | return horizontal; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/fishing/model/FishingConfigLoader.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.fishing.model; 2 | 3 | import org.bukkit.configuration.ConfigurationSection; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public interface FishingConfigLoader { 7 | 8 | /** 9 | * The config key for this loot type 10 | * @return The config key 11 | */ 12 | String getTypeKey(); 13 | 14 | @NotNull T read(ConfigurationSection section); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/shops/IShopItem.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.shops; 2 | 3 | import org.bukkit.Material; 4 | 5 | public interface IShopItem { 6 | 7 | int getId(); 8 | int getBuyPrice(); 9 | 10 | int getSellPrice(); 11 | 12 | String getStore(); 13 | String getItemName(); 14 | Material getMaterial(); 15 | int getModelData(); 16 | int getSlot(); 17 | void setSlot(int slot); 18 | int getPage(); 19 | int getAmount(); 20 | 21 | 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/events/lunar/LunarClientEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.events.lunar; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import org.bukkit.entity.Player; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Data 10 | public class LunarClientEvent extends CustomCancellableEvent { 11 | 12 | private final Player player; 13 | private final boolean registered; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/properties/PropertyUpdateEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.properties; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 7 | 8 | @AllArgsConstructor 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class PropertyUpdateEvent extends CustomCancellableEvent { 12 | 13 | private final String property; 14 | private final Object value; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/skills/assassin/data/ShockingStrikesData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.skills.assassin.data; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.UUID; 6 | 7 | @Data 8 | public class ShockingStrikesData { 9 | 10 | private final UUID player; 11 | private final UUID target; 12 | private int count; 13 | private long lastHit = System.currentTimeMillis(); 14 | 15 | public void addCount() { 16 | count++; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/ClanProperty.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum ClanProperty { 7 | 8 | TIME_CREATED(true), 9 | LAST_LOGIN(true), 10 | EXPERIENCE(true), 11 | POINTS(true), 12 | ENERGY(true), 13 | NO_DOMINANCE_COOLDOWN(true), 14 | BALANCE(true); 15 | 16 | private final boolean saveProperty; 17 | 18 | ClanProperty(boolean saveProperty) { 19 | this.saveProperty = saveProperty; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/block/oraxen/OraxenBlock.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.block.oraxen; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | /** 6 | * Represents a block translated from Oraxen to BetterPVP. 7 | */ 8 | @FunctionalInterface 9 | public interface OraxenBlock { 10 | 11 | /** 12 | * Returns the unique identifier of this block. 13 | * This must be the same as the Oraxen ID. 14 | * 15 | * @return the unique identifier 16 | */ 17 | @NotNull String getId(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/throwables/events/ThrowableHitEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.throwables.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.combat.throwables.ThrowableItem; 6 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Data 10 | public class ThrowableHitEvent extends CustomCancellableEvent { 11 | 12 | protected final ThrowableItem throwable; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/logging/menu/button/type/IStringFilterValueButton.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.logging.menu.button.type; 2 | 3 | import org.jetbrains.annotations.Nullable; 4 | 5 | import java.util.List; 6 | 7 | public interface IStringFilterValueButton extends IRefreshButton { 8 | void addValue(String context, String value); 9 | 10 | @Nullable String getSelected(); 11 | 12 | void setSelectedContext(String newContext); 13 | 14 | java.util.HashMap> getContextValues(); 15 | } 16 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/skills/skills/assassin/data/SilencingStrikesData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.skills.skills.assassin.data; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.UUID; 6 | 7 | @Data 8 | public class SilencingStrikesData { 9 | 10 | private final UUID player; 11 | private final UUID target; 12 | private int count; 13 | private long lastHit = System.currentTimeMillis(); 14 | 15 | public void addCount() { 16 | count++; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/data/FireData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.data; 2 | 3 | import lombok.Data; 4 | import org.bukkit.entity.LivingEntity; 5 | 6 | @Data 7 | public class FireData { 8 | private final LivingEntity damager; 9 | private final long start; 10 | private final long duration; 11 | 12 | public FireData(LivingEntity damager, long duration) { 13 | this.damager = damager; 14 | this.start = System.currentTimeMillis(); 15 | this.duration = duration; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/death/events/CustomDeathEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.death.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 6 | import org.bukkit.entity.LivingEntity; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Data 10 | public class CustomDeathEvent extends CustomEvent { 11 | 12 | private final LivingEntity killed; 13 | private LivingEntity killer; 14 | private String[] reason; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/negative/StunEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.negative; 2 | 3 | import me.mykindos.betterpvp.core.effects.EffectType; 4 | 5 | public class StunEffect extends EffectType { 6 | 7 | @Override 8 | public String getName() { 9 | return "Stun"; 10 | } 11 | 12 | @Override 13 | public boolean isNegative() { 14 | return true; 15 | } 16 | 17 | @Override 18 | public boolean isSpecial() { 19 | return true; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/settings/menus/SettingCategory.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.settings.menus; 2 | 3 | import me.mykindos.betterpvp.core.menu.Windowed; 4 | import me.mykindos.betterpvp.core.utilities.model.description.Description; 5 | 6 | /** 7 | * Represents a category in {@link SettingsMenu} 8 | */ 9 | public interface SettingCategory extends Windowed { 10 | 11 | /** 12 | * @return Get the description of this category (icon, name, lore, etc.) 13 | */ 14 | Description getDescription(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /game/src/main/resources/game-migrations/postgres/V20251101_1__Intial_game.sql: -------------------------------------------------------------------------------- 1 | 2 | -- Store hotbar layouts 3 | CREATE TABLE IF NOT EXISTS champions_hotbar_layouts 4 | ( 5 | client BIGINT REFERENCES clients (id) ON DELETE CASCADE, 6 | role varchar(20) not null, 7 | id int not null, 8 | slot int not null, 9 | item varchar(50) not null, 10 | PRIMARY KEY (client, role, id, slot) 11 | ); 12 | 13 | INSERT INTO property_map (property, type) VALUES ('CHAMPIONS_WINS', 'int') 14 | ON CONFLICT (property, type) DO NOTHING; -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/fishing/event/ProgressionFishingEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.fishing.event; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 5 | import org.bukkit.entity.Player; 6 | 7 | @Getter 8 | public abstract class ProgressionFishingEvent extends CustomEvent { 9 | 10 | private final Player player; 11 | 12 | public ProgressionFishingEvent(Player player) { 13 | this.player = player; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/client/events/ClientUnloadEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.client.events; 2 | 3 | import me.mykindos.betterpvp.core.client.Client; 4 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 5 | 6 | public class ClientUnloadEvent extends CustomEvent { 7 | 8 | private final Client client; 9 | 10 | public ClientUnloadEvent(final Client client) { 11 | this.client = client; 12 | } 13 | 14 | public Client getClient() { 15 | return this.client; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanCreateEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import lombok.EqualsAndHashCode; 4 | import me.mykindos.betterpvp.clans.clans.Clan; 5 | import me.mykindos.betterpvp.core.components.clans.events.ClanEvent; 6 | import org.bukkit.entity.Player; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | 10 | public class ClanCreateEvent extends ClanEvent { 11 | 12 | public ClanCreateEvent(Player player, Clan clan) { 13 | super(player, clan); 14 | } 15 | 16 | } 17 | 18 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/injector/ClansInjectorModule.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.injector; 2 | 3 | import com.google.inject.AbstractModule; 4 | import me.mykindos.betterpvp.clans.Clans; 5 | 6 | public class ClansInjectorModule extends AbstractModule { 7 | 8 | private final Clans plugin; 9 | 10 | public ClansInjectorModule(Clans plugin) { 11 | this.plugin = plugin; 12 | 13 | } 14 | 15 | @Override 16 | protected void configure() { 17 | bind(Clans.class).toInstance(plugin); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/client/events/ClientAdministrateEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.client.events; 2 | 3 | import lombok.EqualsAndHashCode; 4 | import lombok.Value; 5 | import me.mykindos.betterpvp.core.client.Client; 6 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Value 11 | public class ClientAdministrateEvent extends CustomEvent { 12 | 13 | Client client; 14 | Player player; 15 | boolean administrating; 16 | 17 | } -------------------------------------------------------------------------------- /lunar/src/main/java/me/mykindos/betterpvp/lunar/injector/LunarInjectorModule.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.lunar.injector; 2 | 3 | import com.google.inject.AbstractModule; 4 | import me.mykindos.betterpvp.lunar.Lunar; 5 | 6 | public class LunarInjectorModule extends AbstractModule { 7 | 8 | private final Lunar plugin; 9 | 10 | public LunarInjectorModule(Lunar plugin) { 11 | this.plugin = plugin; 12 | 13 | } 14 | 15 | @Override 16 | protected void configure() { 17 | bind(Lunar.class).toInstance(plugin); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/mining/event/ProgressionMiningEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.mining.event; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 5 | import org.bukkit.entity.Player; 6 | 7 | @Getter 8 | public abstract class ProgressionMiningEvent extends CustomCancellableEvent { 9 | private final Player player; 10 | 11 | public ProgressionMiningEvent(Player player) { 12 | this.player = player; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/injector/ShopsInjectorModule.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.injector; 2 | 3 | import com.google.inject.AbstractModule; 4 | import me.mykindos.betterpvp.shops.Shops; 5 | 6 | public class ShopsInjectorModule extends AbstractModule { 7 | 8 | private final Shops plugin; 9 | 10 | public ShopsInjectorModule(Shops plugin) { 11 | this.plugin = plugin; 12 | 13 | } 14 | 15 | @Override 16 | protected void configure() { 17 | bind(Shops.class).toInstance(plugin); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/pillage/events/PillageEndEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.pillage.events; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import me.mykindos.betterpvp.clans.clans.pillage.Pillage; 7 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | @AllArgsConstructor 12 | public class PillageEndEvent extends CustomEvent { 13 | 14 | private final Pillage pillage; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/pillage/events/PillageStartEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.pillage.events; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import me.mykindos.betterpvp.clans.clans.pillage.Pillage; 7 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | @AllArgsConstructor 12 | public class PillageStartEvent extends CustomEvent { 13 | 14 | private final Pillage pillage; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/client/gamer/properties/GamerProperty.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.client.gamer.properties; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | 7 | @Getter 8 | @AllArgsConstructor 9 | public enum GamerProperty { 10 | 11 | // Currency 12 | BALANCE, 13 | FRAGMENTS, 14 | 15 | // Blocks 16 | BLOCKS_PLACED, 17 | BLOCKS_BROKEN, 18 | 19 | // Damage 20 | DAMAGE_DEALT, 21 | DAMAGE_TAKEN, 22 | 23 | TIME_PLAYED, 24 | REMAINING_PVP_PROTECTION, 25 | 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/ConfigAccessor.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model; 2 | 3 | import me.mykindos.betterpvp.core.config.ExtendedYamlConfiguration; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Represents a class that can access its modules config file 8 | */ 9 | public interface ConfigAccessor { 10 | 11 | /** 12 | * Load the config file into memory 13 | * @param config The config file 14 | */ 15 | void loadConfig(@NotNull ExtendedYamlConfiguration config); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/builds/menus/events/SkillDequipEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.builds.menus.events; 2 | 3 | 4 | import me.mykindos.betterpvp.champions.champions.builds.RoleBuild; 5 | import me.mykindos.betterpvp.champions.champions.skills.Skill; 6 | import org.bukkit.entity.Player; 7 | 8 | 9 | public class SkillDequipEvent extends SkillUpdateEvent { 10 | 11 | public SkillDequipEvent(Player player, Skill skill, RoleBuild roleBuild) { 12 | super(player, skill, roleBuild); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/builds/menus/events/SkillEquipEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.builds.menus.events; 2 | 3 | import me.mykindos.betterpvp.champions.champions.builds.RoleBuild; 4 | import me.mykindos.betterpvp.champions.champions.skills.Skill; 5 | import org.bukkit.entity.Player; 6 | 7 | 8 | public class SkillEquipEvent extends SkillUpdateEvent { 9 | 10 | 11 | public SkillEquipEvent(Player player, Skill skill, RoleBuild roleBuild) { 12 | super(player, skill, roleBuild); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ChunkClaimEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.clans.clans.Clan; 4 | import org.bukkit.Chunk; 5 | import org.bukkit.entity.Player; 6 | 7 | 8 | public class ChunkClaimEvent extends ClanTerritoryEvent { 9 | 10 | public ChunkClaimEvent(Player player, Clan clan) { 11 | this(player, clan, player.getChunk()); 12 | } 13 | 14 | public ChunkClaimEvent(Player player, Clan clan, Chunk chunk) { 15 | super(player, clan, chunk); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/world/events/PlayerUseStonecutterEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.world.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import org.bukkit.entity.Player; 7 | import org.bukkit.inventory.ItemStack; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class PlayerUseStonecutterEvent extends CustomCancellableEvent { 12 | 13 | private final Player player; 14 | private final ItemStack item; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /champions/src/main/resources/champions-migrations/postgres/V20251108_1__Create_game_tables.sql: -------------------------------------------------------------------------------- 1 | 2 | -- Store hotbar layouts 3 | CREATE /*stop jooq*/ TABLE IF NOT EXISTS champions_hotbar_layouts 4 | ( 5 | client BIGINT REFERENCES clients (id) ON DELETE CASCADE, 6 | role varchar(20) not null, 7 | id int not null, 8 | slot int not null, 9 | item varchar(50) not null, 10 | PRIMARY KEY (client, role, id, slot) 11 | ); 12 | 13 | INSERT INTO property_map (property, type) VALUES ('CHAMPIONS_WINS', 'int') 14 | ON CONFLICT (property, type) DO NOTHING; -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/core/events/ClanCoreDestroyedEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.core.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.clans.clans.Clan; 6 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Data 10 | public class ClanCoreDestroyedEvent extends CustomEvent { 11 | 12 | private final Clan clan; 13 | 14 | public ClanCoreDestroyedEvent(Clan clan) { 15 | this.clan = clan; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/throwables/ThrowableListener.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.throwables; 2 | 3 | import org.bukkit.Location; 4 | import org.bukkit.entity.LivingEntity; 5 | 6 | public interface ThrowableListener { 7 | 8 | void onThrowableHit(ThrowableItem throwableItem, LivingEntity thrower, LivingEntity hit); 9 | 10 | default void onThrowableHitGround(ThrowableItem throwableItem, LivingEntity thrower, Location location) { 11 | 12 | } 13 | 14 | default void onTick(ThrowableItem throwableItem) { 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/cooldowns/events/CooldownEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.cooldowns.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.cooldowns.Cooldown; 6 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class CooldownEvent extends CustomCancellableEvent { 12 | 13 | private final Player player; 14 | private final Cooldown cooldown; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/events/EffectReceiveEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.effects.Effect; 6 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 7 | import org.bukkit.entity.LivingEntity; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class EffectReceiveEvent extends CustomCancellableEvent { 12 | 13 | private final LivingEntity target; 14 | private final Effect effect; 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/light/BPvPLight.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.light; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.UUID; 6 | 7 | @Data 8 | public class BPvPLight { 9 | private final UUID id; 10 | private final UUID playerID; 11 | private final String source; 12 | private final int level; 13 | 14 | public BPvPLight(UUID playerID, String source, int level) { 15 | this.level = level; 16 | this.id = UUID.randomUUID(); 17 | this.playerID = playerID; 18 | this.source = source; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/fishing/event/PlayerThrowBaitEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.fishing.event; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.progression.profession.fishing.model.Bait; 5 | import org.bukkit.entity.Player; 6 | 7 | @Getter 8 | public class PlayerThrowBaitEvent extends ProgressionFishingEvent { 9 | 10 | private final Bait bait; 11 | 12 | public PlayerThrowBaitEvent(Player player, Bait bait) { 13 | super(player); 14 | this.bait = bait; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /champions/src/main/resources/champions-migrations/postgres/V20251027_1__Move_builds_to_global_db.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS champions_builds 2 | ( 3 | client BIGINT REFERENCES clients (id) ON DELETE CASCADE, 4 | role VARCHAR(255) NOT NULL, 5 | id INTEGER NOT NULL, 6 | sword VARCHAR(255) NULL, 7 | axe VARCHAR(255) NULL, 8 | bow VARCHAR(255) NULL, 9 | passive_a VARCHAR(255) NULL, 10 | passive_b VARCHAR(255) NULL, 11 | global VARCHAR(255) NULL, 12 | active SMALLINT NULL, 13 | PRIMARY KEY (client, role, id) 14 | ); -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanPropertyUpdateEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.clans.clans.Clan; 5 | import me.mykindos.betterpvp.core.properties.PropertyUpdateEvent; 6 | 7 | @Getter 8 | public class ClanPropertyUpdateEvent extends PropertyUpdateEvent { 9 | 10 | private final Clan clan; 11 | 12 | public ClanPropertyUpdateEvent(Clan clan, String property, Object value) { 13 | super(property, value); 14 | this.clan = clan; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/delayedactions/events/ClanCoreTeleportEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.delayedactions.events; 2 | 3 | import org.bukkit.entity.Player; 4 | 5 | public class ClanCoreTeleportEvent extends PlayerDelayedActionEvent { 6 | 7 | public ClanCoreTeleportEvent(Player player, Runnable runnable) { 8 | super(player, runnable); 9 | this.titleText = "Teleport"; 10 | this.subtitleText = "teleporting"; 11 | this.countdown = true; 12 | this.countdownText = "Teleporting in"; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/supplycrate/event/SupplyCrateLandEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.supplycrate.event; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 6 | import me.mykindos.betterpvp.core.supplycrate.SupplyCrate; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class SupplyCrateLandEvent extends CustomEvent { 12 | 13 | private final Player caller; 14 | private final SupplyCrate supplyCrate; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/woodcutting/event/ProgressionWoodcuttingEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.woodcutting.event; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 5 | import org.bukkit.entity.Player; 6 | 7 | @Getter 8 | public abstract class ProgressionWoodcuttingEvent extends CustomCancellableEvent { 9 | private final Player player; 10 | 11 | public ProgressionWoodcuttingEvent(Player player) { 12 | this.player = player; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/delayedactions/events/ClanStuckTeleportEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.delayedactions.events; 2 | 3 | import org.bukkit.entity.Player; 4 | 5 | public class ClanStuckTeleportEvent extends PlayerDelayedActionEvent { 6 | 7 | public ClanStuckTeleportEvent(Player player, Runnable runnable) { 8 | super(player, runnable); 9 | this.titleText = "Teleport"; 10 | this.subtitleText = "teleporting"; 11 | this.countdown = true; 12 | this.countdownText = "Teleporting in"; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/auctionhouse/events/AuctionBuyEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.auctionhouse.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import me.mykindos.betterpvp.shops.auctionhouse.Auction; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class AuctionBuyEvent extends CustomCancellableEvent { 12 | 13 | private final Player player; 14 | private final Auction auction; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/shops/events/ShopKeeperSpawnEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.shops.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 6 | import net.kyori.adventure.text.Component; 7 | import org.bukkit.Location; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class ShopKeeperSpawnEvent extends CustomEvent { 12 | 13 | private final String shopkeeperType; 14 | private final Component name; 15 | private final Location location; 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/client/events/ClientFetchExternalDataEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.client.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.client.Client; 6 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 7 | 8 | import java.util.HashMap; 9 | 10 | @EqualsAndHashCode(callSuper = true) 11 | @Data 12 | public class ClientFetchExternalDataEvent extends CustomEvent { 13 | 14 | private final Client client; 15 | private HashMap data = new HashMap<>(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/stats/sort/TemporalSort.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.stats.sort; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * Sort types for leaderboards. 7 | */ 8 | public enum TemporalSort implements SortType { 9 | 10 | DAILY(1, "Daily"), 11 | WEEKLY(7, "Weekly"), 12 | SEASONAL(999, "Seasonal"); 13 | 14 | @Getter 15 | private final double days; 16 | 17 | @Getter 18 | private final String name; 19 | 20 | TemporalSort(double days, String name) { 21 | this.days = days; 22 | this.name = name; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/guice/platform/PlatformProvider.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.guice.platform; 2 | 3 | import com.google.inject.Module; 4 | import me.mykindos.betterpvp.game.framework.model.Lifecycled; 5 | 6 | /** 7 | * Interface for platform-specific bindings 8 | */ 9 | public interface PlatformProvider extends Module, Lifecycled { 10 | /** 11 | * @return human-readable name of the platform 12 | */ 13 | String getPlatformName(); 14 | 15 | @Override 16 | default void setup() {} 17 | 18 | @Override 19 | default void tearDown() {} 20 | } -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/auctionhouse/data/ListingDuration.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.auctionhouse.data; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum ListingDuration { 7 | 8 | TWELVE_HOURS("12 Hours", 3600000 * 12L), 9 | ONE_DAY("1 Day", 3600000 * 24L), 10 | THREE_DAYS("3 Days", 3600000 * 24L * 3L); 11 | 12 | private final String display; 13 | private final long duration; 14 | 15 | ListingDuration(String display, long duration) { 16 | this.display = display; 17 | this.duration = duration; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ChunkUnclaimEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import me.mykindos.betterpvp.clans.clans.Clan; 4 | import org.bukkit.Chunk; 5 | import org.bukkit.entity.Player; 6 | 7 | public class ChunkUnclaimEvent extends ClanTerritoryEvent { 8 | 9 | public ChunkUnclaimEvent(Player player, Clan targetClan) { 10 | super(player, targetClan, player.getChunk()); 11 | } 12 | 13 | public ChunkUnclaimEvent(Player player, Clan targetClan, Chunk chunk) { 14 | super(player, targetClan, chunk); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/stats/model/Kill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.stats.model; 2 | 3 | import lombok.Getter; 4 | import lombok.RequiredArgsConstructor; 5 | 6 | import java.util.List; 7 | import java.util.UUID; 8 | 9 | @RequiredArgsConstructor 10 | @Getter 11 | public class Kill { 12 | 13 | private final Long id; 14 | private final UUID killer; 15 | private final UUID victim; 16 | private final int ratingDelta; 17 | private final List contributions; 18 | private final long time = System.currentTimeMillis(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/component/impl/runes/RuneColor.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.component.impl.runes; 2 | 3 | /** 4 | * Represents the color of a rune. 5 | */ 6 | public enum RuneColor { 7 | 8 | RED, 9 | BLUE, 10 | YELLOW, 11 | PURPLE; 12 | 13 | public static RuneColor WEAPON = RED; 14 | public static RuneColor ARMOR = BLUE; 15 | public static RuneColor TOOL = YELLOW; 16 | public static RuneColor MISC = PURPLE; 17 | 18 | public String getModelData() { 19 | return this.name().toLowerCase(); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lunar/src/main/resources/configs/config.yml: -------------------------------------------------------------------------------- 1 | lunar: 2 | database: 3 | prefix: lunar_ 4 | command: 5 | lunar: 6 | enabled: true 7 | requiredRank: ADMIN 8 | reload: 9 | enabled: true 10 | requiredRank: ADMIN 11 | # Web Config settings 12 | # If enabled, the plugin will load from local files first, 13 | # then override any values found in the web configuration. 14 | # The web configuration supports directories for each plugin, e.g.: 15 | # core/resourcepacks.yml, champions/skills/skills.yml, clans/config.yml 16 | webconfig: 17 | enabled: false 18 | url: https://betterpvp.net/configs -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/skill/CooldownProgressionSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.skill; 2 | 3 | import me.mykindos.betterpvp.core.client.gamer.Gamer; 4 | import org.bukkit.entity.Player; 5 | 6 | public interface CooldownProgressionSkill { 7 | double getCooldown(int level); 8 | 9 | void whenPlayerUsesSkill(Player player, int level); 10 | 11 | PerkActivator getActivator(); 12 | 13 | boolean shouldDisplayActionBar(Gamer gamer); 14 | 15 | default int getPriority() { 16 | return 1001; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/auctionhouse/events/AuctionCancelEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.auctionhouse.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import me.mykindos.betterpvp.shops.auctionhouse.Auction; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class AuctionCancelEvent extends CustomCancellableEvent { 12 | 13 | private final Player player; 14 | private final Auction auction; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/auctionhouse/events/AuctionCreateEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.auctionhouse.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import me.mykindos.betterpvp.shops.auctionhouse.Auction; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class AuctionCreateEvent extends CustomCancellableEvent { 12 | 13 | private final Player player; 14 | private final Auction auction; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/auctionhouse/events/PlayerPrepareListingEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.auctionhouse.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import org.bukkit.entity.Player; 7 | import org.bukkit.inventory.ItemStack; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class PlayerPrepareListingEvent extends CustomCancellableEvent { 12 | 13 | private final Player player; 14 | private final ItemStack itemStack; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/injector/ChampionsInjectorModule.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.injector; 2 | 3 | import com.google.inject.AbstractModule; 4 | import me.mykindos.betterpvp.champions.Champions; 5 | 6 | public class ChampionsInjectorModule extends AbstractModule { 7 | 8 | private final Champions plugin; 9 | 10 | public ChampionsInjectorModule(Champions plugin) { 11 | this.plugin = plugin; 12 | 13 | } 14 | 15 | @Override 16 | protected void configure() { 17 | bind(Champions.class).toInstance(plugin); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/client/properties/ClientPropertyUpdateEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.client.properties; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.core.client.Client; 5 | import me.mykindos.betterpvp.core.properties.PropertyUpdateEvent; 6 | 7 | @Getter 8 | public class ClientPropertyUpdateEvent extends PropertyUpdateEvent { 9 | 10 | private final Client client; 11 | 12 | public ClientPropertyUpdateEvent(Client client, String property, Object object) { 13 | super(property, object); 14 | this.client = client; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/combatlog/events/PlayerClickCombatLogEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.combatlog.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.combat.combatlog.CombatLog; 6 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class PlayerClickCombatLogEvent extends CustomEvent { 12 | 13 | private final Player player; 14 | private final CombatLog combatLog; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/events/DamageIndicatorEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import org.bukkit.entity.Entity; 7 | import org.bukkit.entity.Player; 8 | 9 | 10 | @EqualsAndHashCode(callSuper = true) 11 | @Data 12 | public class DamageIndicatorEvent extends CustomCancellableEvent { 13 | 14 | private final Player player; 15 | private final Entity entity; 16 | private final double damage; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/clans/events/ClanEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.clans.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.components.clans.IClan; 6 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public abstract class ClanEvent extends CustomCancellableEvent { 12 | 13 | private final Player player; 14 | private final T clan; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/config/Config.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.config; 2 | 3 | import com.google.inject.BindingAnnotation; 4 | 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | @Target(ElementType.FIELD) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @BindingAnnotation 13 | public @interface Config { 14 | 15 | String path(); 16 | 17 | String defaultValue() default ""; 18 | 19 | String configName() default "config"; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/fishing/fish/FishType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.fishing.fish; 2 | 3 | import me.mykindos.betterpvp.progression.profession.fishing.model.FishingLootType; 4 | 5 | /** 6 | * Represents a type of fish that can be caught 7 | */ 8 | public interface FishType extends FishingLootType { 9 | 10 | /** 11 | * @return The minimum weight of the fish 12 | */ 13 | int getMinWeight(); 14 | 15 | /** 16 | * @return The maximum weight of the fish 17 | */ 18 | int getMaxWeight(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/client/gamer/properties/GamerPropertyUpdateEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.client.gamer.properties; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.core.client.gamer.Gamer; 5 | import me.mykindos.betterpvp.core.properties.PropertyUpdateEvent; 6 | 7 | @Getter 8 | public class GamerPropertyUpdateEvent extends PropertyUpdateEvent { 9 | 10 | private final Gamer gamer; 11 | 12 | public GamerPropertyUpdateEvent(Gamer gamer, String property, Object value) { 13 | super(property, value); 14 | this.gamer = gamer; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/adapter/PluginAdapters.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.adapter; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Inherited; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | /** 10 | * Represents a collection of PluginAdapter annotations. 11 | */ 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Target(ElementType.TYPE) 14 | @Inherited 15 | public @interface PluginAdapters { 16 | 17 | PluginAdapter[] value(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/StandardPickaxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import me.mykindos.betterpvp.core.item.FallbackItem; 4 | import me.mykindos.betterpvp.core.item.ItemKey; 5 | import me.mykindos.betterpvp.core.item.ItemRarity; 6 | import org.bukkit.Material; 7 | 8 | @ItemKey("core:standard_pickaxe") 9 | @FallbackItem(value = Material.IRON_PICKAXE, keepRecipes = true) 10 | public class StandardPickaxe extends Sword { 11 | 12 | public StandardPickaxe() { 13 | super("Standard Pickaxe", Material.IRON_PICKAXE, ItemRarity.COMMON); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/parties/events/PartyCreateEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.parties.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import me.mykindos.betterpvp.core.parties.Party; 7 | import me.mykindos.betterpvp.core.parties.PartyMemberFilter; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class PartyCreateEvent extends CustomCancellableEvent { 12 | 13 | private final Party party; 14 | private final PartyMemberFilter filter; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/supplycrate/event/SupplyCrateDeployEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.supplycrate.event; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import me.mykindos.betterpvp.core.supplycrate.SupplyCrateType; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class SupplyCrateDeployEvent extends CustomCancellableEvent { 12 | 13 | private final Player caller; 14 | private final SupplyCrateType type; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/properties/ChampionsPropertyUpdateEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.properties; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.core.client.gamer.Gamer; 5 | import me.mykindos.betterpvp.core.properties.PropertyUpdateEvent; 6 | 7 | 8 | @Getter 9 | public class ChampionsPropertyUpdateEvent extends PropertyUpdateEvent { 10 | 11 | private final Gamer gamer; 12 | 13 | public ChampionsPropertyUpdateEvent(Gamer gamer, String property, Object value) { 14 | super(property, value); 15 | this.gamer = gamer; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanInviteMemberEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.clans.clans.Clan; 5 | import me.mykindos.betterpvp.core.components.clans.events.ClanEvent; 6 | import org.bukkit.entity.Player; 7 | 8 | 9 | public class ClanInviteMemberEvent extends ClanEvent { 10 | 11 | @Getter 12 | private final Player target; 13 | 14 | public ClanInviteMemberEvent(Player player, Clan clan, Player target) { 15 | super(player, clan); 16 | this.target = target; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/injector/ProgressionInjectorModule.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.injector; 2 | 3 | import com.google.inject.AbstractModule; 4 | import me.mykindos.betterpvp.progression.Progression; 5 | 6 | public class ProgressionInjectorModule extends AbstractModule { 7 | 8 | private final Progression plugin; 9 | 10 | public ProgressionInjectorModule(Progression plugin) { 11 | this.plugin = plugin; 12 | } 13 | 14 | @Override 15 | protected void configure() { 16 | bind(Progression.class).toInstance(plugin); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/fishing/model/FishingLoot.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.fishing.model; 2 | 3 | import me.mykindos.betterpvp.progression.profession.fishing.event.PlayerCaughtFishEvent; 4 | 5 | public interface FishingLoot { 6 | 7 | /** 8 | * Get the type of this loot 9 | * @return The type of this loot 10 | */ 11 | FishingLootType getType(); 12 | 13 | /** 14 | * Called whenever this loot is caught 15 | * @param event The event 16 | */ 17 | void processCatch(PlayerCaughtFishEvent event); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/data/ClanDefaultValues.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.data; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.Singleton; 5 | import lombok.Getter; 6 | import me.mykindos.betterpvp.core.config.Config; 7 | 8 | @Getter 9 | @Singleton 10 | public class ClanDefaultValues { 11 | 12 | @Inject 13 | @Config(path = "clans.clan.default.energy", defaultValue = "2400") 14 | private int defaultEnergy; 15 | 16 | @Inject 17 | @Config(path = "clans.clan.default.points", defaultValue = "0") 18 | private int defaultPoints; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanTerritoryEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.clans.clans.Clan; 5 | import me.mykindos.betterpvp.core.components.clans.events.ClanEvent; 6 | import org.bukkit.Chunk; 7 | import org.bukkit.entity.Player; 8 | 9 | @Getter 10 | public class ClanTerritoryEvent extends ClanEvent { 11 | 12 | private final Chunk chunk; 13 | 14 | public ClanTerritoryEvent(Player player, Clan clan, Chunk chunk) { 15 | super(player, clan); 16 | this.chunk = chunk; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/client/punishments/types/WarnPunishmentType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.client.punishments.types; 2 | 3 | public class WarnPunishmentType implements IPunishmentType { 4 | @Override 5 | public String getName() { 6 | return "Warn"; 7 | } 8 | 9 | @Override 10 | public String getChatLabel() { 11 | return "warned"; 12 | } 13 | 14 | /** 15 | * Whether this punishment has a duration or not 16 | * 17 | * @return 18 | */ 19 | @Override 20 | public boolean hasDuration() { 21 | return false; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/positive/InvulnerableEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.positive; 2 | 3 | import me.mykindos.betterpvp.core.effects.EffectType; 4 | 5 | /** 6 | * Provides immunity to damage 7 | */ 8 | public class InvulnerableEffect extends EffectType { 9 | 10 | @Override 11 | public String getName() { 12 | return "Invulnerable"; 13 | } 14 | 15 | @Override 16 | public boolean isNegative() { 17 | return false; 18 | } 19 | 20 | @Override 21 | public boolean isSpecial() { 22 | return true; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/CrudeAxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:crude_axe") 11 | @FallbackItem(value = Material.STONE_AXE, keepRecipes = true) 12 | public class CrudeAxe extends Sword { 13 | 14 | public CrudeAxe() { 15 | super("Crude Axe", Material.STONE_AXE, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/CrudeHoe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:crude_hoe") 11 | @FallbackItem(value = Material.STONE_HOE, keepRecipes = true) 12 | public class CrudeHoe extends Sword { 13 | 14 | public CrudeHoe() { 15 | super("Crude Hoe", Material.STONE_HOE, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/recipe/crafting/CraftingResult.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.recipe.crafting; 2 | 3 | import me.mykindos.betterpvp.core.item.ItemInstance; 4 | import org.bukkit.inventory.ItemStack; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | /** 10 | * Represents the result of a crafting operation. 11 | * This includes the primary result item, any additional results, 12 | * and the new crafting matrix that should be used after the crafting operation. 13 | */ 14 | public record CraftingResult(ItemInstance result, Map newCraftingMatrix) { 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/utilities/model/MultiRayTraceResult.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.utilities.model; 2 | 3 | import lombok.Getter; 4 | import org.bukkit.util.RayTraceResult; 5 | 6 | import java.util.Arrays; 7 | import java.util.stream.Stream; 8 | 9 | @Getter 10 | public final class MultiRayTraceResult { 11 | 12 | private final RayTraceResult[] results; 13 | 14 | public MultiRayTraceResult(RayTraceResult[] results) { 15 | this.results = results; 16 | } 17 | 18 | public Stream stream() { 19 | return Arrays.stream(results); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/framework/module/powerup/ParticipantPowerupEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.framework.module.powerup; 2 | 3 | import lombok.EqualsAndHashCode; 4 | import lombok.Value; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import me.mykindos.betterpvp.game.framework.model.player.Participant; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Value 11 | public class ParticipantPowerupEvent extends CustomCancellableEvent { 12 | Player player; 13 | Participant participant; 14 | Powerup powerup; 15 | } 16 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/builds/event/ChampionsBuildLoadedEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.builds.event; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.champions.champions.builds.GamerBuilds; 6 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class ChampionsBuildLoadedEvent extends CustomEvent { 12 | 13 | private final Player player; 14 | private final GamerBuilds gamerBuilds; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanRelationshipEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.clans.clans.Clan; 5 | import me.mykindos.betterpvp.core.components.clans.events.ClanEvent; 6 | import org.bukkit.entity.Player; 7 | 8 | public class ClanRelationshipEvent extends ClanEvent { 9 | 10 | @Getter 11 | private final Clan targetClan; 12 | 13 | public ClanRelationshipEvent(Player player, Clan clan, Clan targetClan) { 14 | super(player, clan); 15 | this.targetClan = targetClan; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/throwables/events/ThrowableHitGroundEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.throwables.events; 2 | 3 | import lombok.EqualsAndHashCode; 4 | import me.mykindos.betterpvp.core.combat.throwables.ThrowableItem; 5 | import org.bukkit.Location; 6 | 7 | @EqualsAndHashCode(callSuper = true) 8 | public class ThrowableHitGroundEvent extends ThrowableHitEvent { 9 | 10 | private final Location location; 11 | 12 | public ThrowableHitGroundEvent(ThrowableItem throwable, Location location) { 13 | super(throwable); 14 | this.location = location; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/PowerAxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:power_axe") 11 | @FallbackItem(value = Material.DIAMOND_AXE, keepRecipes = true) 12 | public class PowerAxe extends Sword { 13 | 14 | public PowerAxe() { 15 | super("Power Axe", Material.DIAMOND_AXE, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/PowerHoe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:power_hoe") 11 | @FallbackItem(value = Material.DIAMOND_HOE, keepRecipes = true) 12 | public class PowerHoe extends Sword { 13 | 14 | public PowerHoe() { 15 | super("Power Hoe", Material.DIAMOND_HOE, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /progression/src/main/java/me/mykindos/betterpvp/progression/profession/skill/fishing/FishingProgressionSkill.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.progression.profession.skill.fishing; 2 | 3 | import me.mykindos.betterpvp.progression.Progression; 4 | import me.mykindos.betterpvp.progression.profession.skill.ProgressionSkill; 5 | 6 | public abstract class FishingProgressionSkill extends ProgressionSkill { 7 | 8 | protected FishingProgressionSkill(Progression progression) { 9 | super(progression); 10 | } 11 | 12 | @Override 13 | public String getProgressionTree() { 14 | return "Fishing"; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/champions/events/PlayerCanUseSkillEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.champions.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.components.champions.IChampionsSkill; 6 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class PlayerCanUseSkillEvent extends CustomCancellableEvent { 12 | 13 | private final Player player; 14 | private final IChampionsSkill skill; 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/events/kill/PlayerSuicideEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.events.kill; 2 | 3 | import me.mykindos.betterpvp.core.framework.delayedactions.events.PlayerDelayedActionEvent; 4 | import org.bukkit.entity.Player; 5 | 6 | public class PlayerSuicideEvent extends PlayerDelayedActionEvent { 7 | 8 | public PlayerSuicideEvent(Player player, Runnable runnable) { 9 | super(player, runnable); 10 | this.titleText = "Suicide"; 11 | this.subtitleText = "suiciding"; 12 | this.countdown = true; 13 | this.countdownText = ""; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/inventory/gui/GuiParent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.inventory.gui; 2 | 3 | public interface GuiParent { 4 | 5 | /** 6 | * Called by the child {@link Gui} to report an update of a {@link me.mykindos.betterpvp.core.inventory.gui.SlotElement}. 7 | * 8 | * @param child The child {@link Gui} whose {@link me.mykindos.betterpvp.core.inventory.gui.SlotElement} has changed 9 | * @param slotIndex The slot index of the changed {@link SlotElement} in the child {@link Gui} 10 | */ 11 | void handleSlotElementUpdate(Gui child, int slotIndex); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/RusticAxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:rustic_axe") 11 | @FallbackItem(value = Material.WOODEN_AXE, keepRecipes = true) 12 | public class RusticAxe extends Sword { 13 | 14 | public RusticAxe() { 15 | super("Rustic Axe", Material.WOODEN_AXE, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/RusticHoe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:rustic_hoe") 11 | @FallbackItem(value = Material.WOODEN_HOE, keepRecipes = true) 12 | public class RusticHoe extends Sword { 13 | 14 | public RusticHoe() { 15 | super("Rustic Hoe", Material.WOODEN_HOE, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/world/events/SpawnTeleportEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.world.events; 2 | 3 | import me.mykindos.betterpvp.core.framework.delayedactions.events.PlayerDelayedActionEvent; 4 | import org.bukkit.entity.Player; 5 | 6 | public class SpawnTeleportEvent extends PlayerDelayedActionEvent { 7 | 8 | public SpawnTeleportEvent(Player player, Runnable runnable) { 9 | super(player, runnable); 10 | this.titleText = "Teleport"; 11 | this.subtitleText = "teleporting"; 12 | this.countdown = true; 13 | this.countdownText = "Teleporting in"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/framework/event/GameStateChangeEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.framework.event; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 5 | import me.mykindos.betterpvp.game.framework.state.GameState; 6 | 7 | @Getter 8 | public class GameStateChangeEvent extends CustomEvent { 9 | 10 | private final GameState oldState; 11 | private final GameState newState; 12 | 13 | public GameStateChangeEvent(GameState oldState, GameState newState) { 14 | this.oldState = oldState; 15 | this.newState = newState; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/framework/model/chat/GenericColorProvider.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.framework.model.chat; 2 | 3 | import me.mykindos.betterpvp.game.framework.AbstractGame; 4 | import net.kyori.adventure.text.format.NamedTextColor; 5 | import net.kyori.adventure.text.format.TextColor; 6 | import org.bukkit.entity.Player; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | public class GenericColorProvider implements PlayerColorProvider { 10 | @Override 11 | public @NotNull TextColor getColor(Player player, AbstractGame game) { 12 | return NamedTextColor.YELLOW; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /champions/src/main/java/me/mykindos/betterpvp/champions/champions/roles/events/RoleChangeEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.champions.champions.roles.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.components.champions.Role; 6 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class RoleChangeEvent extends CustomCancellableEvent { 12 | 13 | private final Player player; 14 | private final Role role; 15 | private final Role previous; 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/chat/ignore/IIgnoreService.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.chat.ignore; 2 | 3 | import me.mykindos.betterpvp.core.client.Client; 4 | 5 | public interface IIgnoreService { 6 | 7 | /** 8 | * Determines if the target client is ignored by the source client. 9 | * 10 | * @param source The client who might have ignored the target. 11 | * @param target The client who might be ignored by the source. 12 | * @return true if the source client has ignored the target client; false otherwise. 13 | */ 14 | boolean isClientIgnored(Client source, Client target); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/listeners/mythicmobs/DamageIndicator.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.listeners.mythicmobs; 2 | 3 | import org.bukkit.entity.TextDisplay; 4 | 5 | public record DamageIndicator(TextDisplay display, TextDisplay shadow, double damage, long timestamp) { 6 | 7 | public boolean isValid() { 8 | return display != null && display.isValid() && shadow != null && shadow.isValid(); 9 | } 10 | 11 | public void despawn() { 12 | if (!isValid()){ 13 | return; 14 | } 15 | display.remove(); 16 | shadow.remove(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/BoosterAxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:booster_axe") 11 | @FallbackItem(value = Material.GOLDEN_AXE, keepRecipes = true) 12 | public class BoosterAxe extends Sword { 13 | 14 | public BoosterAxe() { 15 | super("Booster Axe", Material.GOLDEN_AXE, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/BoosterHoe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:booster_hoe") 11 | @FallbackItem(value = Material.GOLDEN_HOE, keepRecipes = true) 12 | public class BoosterHoe extends Sword { 13 | 14 | public BoosterHoe() { 15 | super("Booster Hoe", Material.GOLDEN_HOE, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/CrudeSword.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:crude_sword") 11 | @FallbackItem(value = Material.STONE_SWORD, keepRecipes = true) 12 | public class CrudeSword extends Sword { 13 | 14 | public CrudeSword() { 15 | super("Crude Sword", Material.STONE_SWORD, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/StandardAxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:standard_axe") 11 | @FallbackItem(value = Material.IRON_AXE, keepRecipes = true) 12 | public class StandardAxe extends Sword { 13 | 14 | public StandardAxe() { 15 | super("Standard Axe", Material.IRON_AXE, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/StandardHoe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:standard_hoe") 11 | @FallbackItem(value = Material.IRON_HOE, keepRecipes = true) 12 | public class StandardHoe extends Sword { 13 | 14 | public StandardHoe() { 15 | super("Standard Hoe", Material.IRON_HOE, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | name: betterpvp 3 | 4 | services: 5 | postgres: 6 | image: postgres:latest 7 | container_name: postgres 8 | environment: 9 | POSTGRES_USER: user 10 | POSTGRES_PASSWORD: BetterPvP123! 11 | POSTGRES_DB: betterpvp 12 | ports: 13 | - "5002:5432" 14 | healthcheck: 15 | test: ["CMD-SHELL", "pg_isready -U user -d betterpvp"] 16 | interval: 10s 17 | timeout: 5s 18 | retries: 5 19 | 20 | redis: 21 | image: redis 22 | container_name: redis 23 | command: redis-server --requirepass BetterPvPAdmin123! 24 | ports: 25 | - "5001:6379" -------------------------------------------------------------------------------- /shops/src/main/java/me/mykindos/betterpvp/shops/shops/items/data/PolynomialData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.shops.shops.items.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class PolynomialData { 9 | 10 | private final int minBuyPrice; 11 | private final int baseBuyPrice; 12 | private final int maxBuyPrice; 13 | private final int minSellPrice; 14 | private final int baseSellPrice; 15 | private final int maxSellPrice; 16 | 17 | private final int maxStock; 18 | private final int baseStock; 19 | private int currentStock; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/click/RightClickContext.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.click; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import me.mykindos.betterpvp.core.client.gamer.Gamer; 6 | import me.mykindos.betterpvp.core.combat.click.events.RightClickEvent; 7 | import org.bukkit.inventory.ItemStack; 8 | 9 | @AllArgsConstructor 10 | @Getter 11 | public class RightClickContext { 12 | 13 | private final Gamer gamer; 14 | private final long time = System.currentTimeMillis(); 15 | private final RightClickEvent event; 16 | private final ItemStack itemStack; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/AncientAxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:ancient_axe") 11 | @FallbackItem(value = Material.NETHERITE_AXE, keepRecipes = true) 12 | public class AncientAxe extends Sword { 13 | 14 | public AncientAxe() { 15 | super("Ancient Axe", Material.NETHERITE_AXE, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/AncientHoe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:ancient_hoe") 11 | @FallbackItem(value = Material.NETHERITE_HOE, keepRecipes = true) 12 | public class AncientHoe extends Sword { 13 | 14 | public AncientHoe() { 15 | super("Ancient Hoe", Material.NETHERITE_HOE, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/CrudeShovel.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:crude_shovel") 11 | @FallbackItem(value = Material.STONE_SHOVEL, keepRecipes = true) 12 | public class CrudeShovel extends Sword { 13 | 14 | public CrudeShovel() { 15 | super("Crude Shovel", Material.STONE_SHOVEL, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/PowerSword.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:power_sword") 11 | @FallbackItem(value = Material.DIAMOND_SWORD, keepRecipes = true) 12 | public class PowerSword extends Sword { 13 | 14 | public PowerSword() { 15 | super("Power Sword", Material.DIAMOND_SWORD, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/RusticSword.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:rustic_sword") 11 | @FallbackItem(value = Material.WOODEN_SWORD, keepRecipes = true) 12 | public class RusticSword extends Sword { 13 | 14 | public RusticSword() { 15 | super("Rustic Sword", Material.WOODEN_SWORD, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/tips/types/IRunCommand.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.tips.types; 2 | 3 | import net.kyori.adventure.text.Component; 4 | import net.kyori.adventure.text.event.ClickEvent; 5 | import net.kyori.adventure.text.event.HoverEvent; 6 | import net.kyori.adventure.text.format.NamedTextColor; 7 | 8 | public interface IRunCommand { 9 | default Component runCommand(String command) { 10 | return Component.text(command, NamedTextColor.YELLOW) 11 | .clickEvent(ClickEvent.runCommand(command)) 12 | .hoverEvent(HoverEvent.showText(Component.text(command))); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/framework/event/GameChangeEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.framework.event; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 5 | import me.mykindos.betterpvp.game.framework.AbstractGame; 6 | 7 | @Getter 8 | public class GameChangeEvent extends CustomEvent { 9 | 10 | private final AbstractGame oldGame; 11 | private final AbstractGame newGame; 12 | 13 | public GameChangeEvent(AbstractGame oldGame, AbstractGame newGame) { 14 | this.oldGame = oldGame; 15 | this.newGame = newGame; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/framework/event/PreGameStateChangeEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.framework.event; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 5 | import me.mykindos.betterpvp.game.framework.state.GameState; 6 | 7 | @Getter 8 | public class PreGameStateChangeEvent extends CustomEvent { 9 | 10 | private final GameState oldState; 11 | private final GameState newState; 12 | 13 | public PreGameStateChangeEvent(GameState oldState, GameState newState) { 14 | this.oldState = oldState; 15 | this.newState = newState; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/framework/state/GameState.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.framework.state; 2 | 3 | /** 4 | * Represents the possible states of a game. 5 | */ 6 | public enum GameState { 7 | /** 8 | * Players are in the lobby waiting for enough players to join. 9 | */ 10 | WAITING, 11 | 12 | /** 13 | * Game is about to begin (countdown phase). 14 | */ 15 | STARTING, 16 | 17 | /** 18 | * Game is in progress on the map. 19 | */ 20 | IN_GAME, 21 | 22 | /** 23 | * Game has ended, 10-second window showing results. 24 | */ 25 | ENDING 26 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/block/data/BlockRemovalCause.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.block.data; 2 | 3 | /** 4 | * Represents the cause of block removal. 5 | * Used to determine how block data should handle removal. 6 | */ 7 | public enum BlockRemovalCause { 8 | 9 | /** 10 | * Block was broken naturally by a player or environmental cause. 11 | * Data should drop items and clean up naturally. 12 | */ 13 | NATURAL, 14 | 15 | /** 16 | * Block was removed by force (commands, admin actions, etc.). 17 | * Data should be cleaned up but may not drop items. 18 | */ 19 | FORCED, 20 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/champions/events/PlayerUseItemEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.champions.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import me.mykindos.betterpvp.core.item.ItemInstance; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class PlayerUseItemEvent extends CustomCancellableEvent { 12 | 13 | private final Player player; 14 | private final ItemInstance weapon; 15 | private final boolean isDangerous; 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/energy/events/UpdateMaxEnergyEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.energy.events; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 6 | import org.bukkit.entity.Player; 7 | 8 | @Getter 9 | @Setter 10 | public class UpdateMaxEnergyEvent extends CustomCancellableEvent { 11 | private final Player player; 12 | private double newMax; 13 | 14 | public UpdateMaxEnergyEvent(Player player, double newMax) { 15 | super(true); 16 | this.player = player; 17 | this.newMax = newMax; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/component/impl/ability/TriggerType.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.component.impl.ability; 2 | 3 | import net.kyori.adventure.text.Component; 4 | 5 | /** 6 | * Represents a trigger type for an ability. 7 | * 8 | * @see TriggerType TriggerType, for default implementations */ 9 | public interface TriggerType { 10 | 11 | static TriggerType dummy(String name) { 12 | return () -> Component.text(name); 13 | } 14 | 15 | /** 16 | * Returns the name of the trigger type. 17 | * @return the name of the trigger type 18 | */ 19 | Component getName(); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/recipe/RecipeRegistry.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.recipe; 2 | 3 | import me.mykindos.betterpvp.core.recipe.resolver.RecipeResolver; 4 | import org.bukkit.NamespacedKey; 5 | 6 | import java.util.Collection; 7 | 8 | public interface RecipeRegistry> { 9 | 10 | void registerRecipe(NamespacedKey key, T recipe); 11 | 12 | default void clearRecipe(NamespacedKey key) { 13 | throw new UnsupportedOperationException("Cannot clear recipes from this registry"); 14 | } 15 | 16 | Collection getRecipes(); 17 | 18 | RecipeResolver getResolver(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/guice/GameScoped.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.game.guice; 2 | 3 | import com.google.inject.ScopeAnnotation; 4 | 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * Marks a component as being scoped to the game lifecycle. 12 | * Components with this annotation will only be available during IN_GAME state. 13 | */ 14 | @Target({ElementType.TYPE, ElementType.METHOD}) 15 | @Retention(RetentionPolicy.RUNTIME) 16 | @ScopeAnnotation 17 | public @interface GameScoped { 18 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/framework/blocktag/BlockTag.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.framework.blocktag; 2 | 3 | import lombok.Data; 4 | 5 | import java.time.Instant; 6 | 7 | @Data 8 | public class BlockTag { 9 | 10 | private final String tag; 11 | private final String value; 12 | private Instant lastUpdated; 13 | 14 | public int getAsInt() { 15 | return Integer.parseInt(value); 16 | } 17 | 18 | public double getAsDouble() { 19 | return Double.parseDouble(value); 20 | } 21 | 22 | public boolean getAsBoolean() { 23 | return Boolean.parseBoolean(value); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/component/impl/stat/serialization/StatSerializer.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.component.impl.stat.serialization; 2 | 3 | import me.mykindos.betterpvp.core.item.component.impl.stat.ItemStat; 4 | import me.mykindos.betterpvp.core.item.serialization.CustomSerializer; 5 | 6 | /** 7 | * Interface for serializing stats to persistent data containers. 8 | * This separates the responsibility of persistence from the stat behavior. 9 | * 10 | * @param The type of stat this serializer handles 11 | */ 12 | public interface StatSerializer> extends CustomSerializer { 13 | 14 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/component/serialization/ComponentSerializer.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.component.serialization; 2 | 3 | import me.mykindos.betterpvp.core.item.component.ItemComponent; 4 | import me.mykindos.betterpvp.core.item.serialization.CustomSerializer; 5 | 6 | /** 7 | * Interface for serializing components to persistent data containers. 8 | * This separates the responsibility of persistence from the component behavior. 9 | * 10 | * @param The type of component this serializer handles 11 | */ 12 | public interface ComponentSerializer extends CustomSerializer { 13 | 14 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/Axe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import me.mykindos.betterpvp.core.item.ItemRarity; 4 | import me.mykindos.betterpvp.core.item.component.impl.runes.RuneContainerComponent; 5 | import me.mykindos.betterpvp.core.item.model.VanillaItem; 6 | import net.kyori.adventure.text.Component; 7 | import org.bukkit.Material; 8 | 9 | public class Axe extends VanillaItem { 10 | 11 | public Axe(String name, Material material, ItemRarity rarity) { 12 | super(Component.text(name), material, rarity); 13 | addSerializableComponent(new RuneContainerComponent(2)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/BoosterSword.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:booster_sword") 11 | @FallbackItem(value = Material.GOLDEN_SWORD, keepRecipes = true) 12 | public class BoosterSword extends Sword { 13 | 14 | public BoosterSword() { 15 | super("Booster Sword", Material.GOLDEN_SWORD, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/CrudePickaxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:crude_pickaxe") 11 | @FallbackItem(value = Material.STONE_PICKAXE, keepRecipes = true) 12 | public class CrudePickaxe extends Sword { 13 | 14 | public CrudePickaxe() { 15 | super("Crude Pickaxe", Material.STONE_PICKAXE, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/Hoe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import me.mykindos.betterpvp.core.item.ItemRarity; 4 | import me.mykindos.betterpvp.core.item.component.impl.runes.RuneContainerComponent; 5 | import me.mykindos.betterpvp.core.item.model.VanillaItem; 6 | import net.kyori.adventure.text.Component; 7 | import org.bukkit.Material; 8 | 9 | public class Hoe extends VanillaItem { 10 | 11 | public Hoe(String name, Material material, ItemRarity rarity) { 12 | super(Component.text(name), material, rarity); 13 | addSerializableComponent(new RuneContainerComponent(2)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/PowerShovel.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:power_shovel") 11 | @FallbackItem(value = Material.DIAMOND_SHOVEL, keepRecipes = true) 12 | public class PowerShovel extends Sword { 13 | 14 | public PowerShovel() { 15 | super("Power Shovel", Material.DIAMOND_SHOVEL, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/RusticShovel.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:rustic_shovel") 11 | @FallbackItem(value = Material.WOODEN_SHOVEL, keepRecipes = true) 12 | public class RusticShovel extends Sword { 13 | 14 | public RusticShovel() { 15 | super("Rustic Shovel", Material.WOODEN_SHOVEL, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/StandardSword.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:standard_sword") 11 | @FallbackItem(value = Material.IRON_SWORD, keepRecipes = true) 12 | public class StandardSword extends Sword { 13 | 14 | public StandardSword() { 15 | super("Standard Sword", Material.IRON_SWORD, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/events/ClanKickMemberEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.events; 2 | 3 | import lombok.Getter; 4 | import me.mykindos.betterpvp.clans.clans.Clan; 5 | import me.mykindos.betterpvp.core.client.Client; 6 | import me.mykindos.betterpvp.core.components.clans.events.ClanEvent; 7 | import org.bukkit.entity.Player; 8 | 9 | @Getter 10 | public class ClanKickMemberEvent extends ClanEvent { 11 | 12 | private final Client target; 13 | 14 | public ClanKickMemberEvent(Player player, Clan clan, Client target) { 15 | super(player, clan); 16 | this.target = target; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/chat/commands/ChannelCommand.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.chat.commands; 2 | 3 | import me.mykindos.betterpvp.core.client.Client; 4 | import me.mykindos.betterpvp.core.command.Command; 5 | import org.bukkit.entity.Player; 6 | 7 | public class ChannelCommand extends Command { 8 | @Override 9 | public String getName() { 10 | return "channel"; 11 | } 12 | 13 | @Override 14 | public String getDescription() { 15 | return "Change chat channel"; 16 | } 17 | 18 | @Override 19 | public void execute(Player player, Client client, String... args) { 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/combatlog/events/PlayerCombatLogEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.combatlog.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.client.Client; 6 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class PlayerCombatLogEvent extends CustomEvent { 12 | 13 | private final Client client; 14 | private final Player player; 15 | 16 | private boolean safe = true; 17 | private long duration = 10000; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/components/champions/events/PlayerUseSkillEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.components.champions.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.components.champions.IChampionsSkill; 6 | import me.mykindos.betterpvp.core.framework.events.CustomCancellableEvent; 7 | import org.bukkit.entity.Player; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class PlayerUseSkillEvent extends CustomCancellableEvent { 12 | 13 | private final Player player; 14 | private final IChampionsSkill skill; 15 | private final int level; 16 | 17 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/positive/GlowingEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.positive; 2 | 3 | import me.mykindos.betterpvp.core.effects.VanillaEffectType; 4 | import org.bukkit.potion.PotionEffectType; 5 | 6 | public class GlowingEffect extends VanillaEffectType { 7 | 8 | @Override 9 | public String getName() { 10 | return "Glowing"; 11 | } 12 | 13 | @Override 14 | public boolean isNegative() { 15 | return false; 16 | } 17 | 18 | @Override 19 | public PotionEffectType getVanillaPotionType() { 20 | return PotionEffectType.GLOWING; 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/AncientSword.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:ancient_sword") 11 | @FallbackItem(value = Material.NETHERITE_SWORD, keepRecipes = true) 12 | public class AncientSword extends Sword { 13 | 14 | public AncientSword() { 15 | super("Ancient Sword", Material.NETHERITE_SWORD, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/BoosterShovel.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:booster_shovel") 11 | @FallbackItem(value = Material.GOLDEN_SHOVEL, keepRecipes = true) 12 | public class BoosterShovel extends Sword { 13 | 14 | public BoosterShovel() { 15 | super("Booster Shovel", Material.GOLDEN_SHOVEL, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/PowerPickaxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:power_pickaxe") 11 | @FallbackItem(value = Material.DIAMOND_PICKAXE, keepRecipes = true) 12 | public class PowerPickaxe extends Sword { 13 | 14 | public PowerPickaxe() { 15 | super("Power Pickaxe", Material.DIAMOND_PICKAXE, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/RusticPickaxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:rustic_pickaxe") 11 | @FallbackItem(value = Material.WOODEN_PICKAXE, keepRecipes = true) 12 | public class RusticPickaxe extends Sword { 13 | 14 | public RusticPickaxe() { 15 | super("Rustic Pickaxe", Material.WOODEN_PICKAXE, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/StandardShovel.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:standard_shovel") 11 | @FallbackItem(value = Material.IRON_SHOVEL, keepRecipes = true) 12 | public class StandardShovel extends Sword { 13 | 14 | public StandardShovel() { 15 | super("Standard Shovel", Material.IRON_SHOVEL, ItemRarity.COMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /clans/src/main/java/me/mykindos/betterpvp/clans/clans/listeners/ClanListener.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.clans.clans.listeners; 2 | 3 | import me.mykindos.betterpvp.clans.clans.ClanManager; 4 | import me.mykindos.betterpvp.core.client.repository.ClientManager; 5 | import org.bukkit.event.Listener; 6 | 7 | public abstract class ClanListener implements Listener { 8 | 9 | protected final ClanManager clanManager; 10 | protected final ClientManager clientManager; 11 | 12 | public ClanListener(ClanManager clanManager, ClientManager clientManager) { 13 | this.clanManager = clanManager; 14 | this.clientManager = clientManager; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/database/ConnectionData.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.database; 2 | 3 | import com.zaxxer.hikari.HikariConfig; 4 | import com.zaxxer.hikari.HikariDataSource; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | import lombok.SneakyThrows; 8 | 9 | import java.sql.Connection; 10 | 11 | @AllArgsConstructor 12 | @Getter 13 | public class ConnectionData { 14 | 15 | private final HikariConfig hikariConfig; 16 | private final HikariDataSource dataSource; 17 | 18 | @SneakyThrows 19 | public Connection getConnection() { 20 | return dataSource.getConnection(); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/negative/NauseaEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.negative; 2 | 3 | import me.mykindos.betterpvp.core.effects.VanillaEffectType; 4 | import org.bukkit.potion.PotionEffectType; 5 | 6 | public class NauseaEffect extends VanillaEffectType { 7 | 8 | @Override 9 | public String getName() { 10 | return "Nausea"; 11 | } 12 | 13 | @Override 14 | public boolean isNegative() { 15 | return true; 16 | } 17 | 18 | @Override 19 | public PotionEffectType getVanillaPotionType() { 20 | return PotionEffectType.NAUSEA; 21 | } 22 | 23 | } 24 | 25 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/negative/WitherEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.negative; 2 | 3 | import me.mykindos.betterpvp.core.effects.VanillaEffectType; 4 | import org.bukkit.potion.PotionEffectType; 5 | 6 | public class WitherEffect extends VanillaEffectType { 7 | 8 | @Override 9 | public String getName() { 10 | return "Wither"; 11 | } 12 | 13 | @Override 14 | public boolean isNegative() { 15 | return true; 16 | } 17 | 18 | @Override 19 | public PotionEffectType getVanillaPotionType() { 20 | return PotionEffectType.WITHER; 21 | } 22 | 23 | } 24 | 25 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/energy/events/DegenerateEnergyEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.energy.events; 2 | 3 | import lombok.EqualsAndHashCode; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import org.bukkit.entity.Player; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Getter 10 | @Setter 11 | public class DegenerateEnergyEvent extends EnergyEvent { 12 | 13 | private final Player player; 14 | private double energy; 15 | 16 | public DegenerateEnergyEvent(Player player, double energy, Cause cause) { 17 | super(cause); 18 | this.player = player; 19 | this.energy = energy; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/component/impl/stat/serialization/StatDeserializer.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.component.impl.stat.serialization; 2 | 3 | import me.mykindos.betterpvp.core.item.component.impl.stat.ItemStat; 4 | import me.mykindos.betterpvp.core.item.serialization.CustomDeserializer; 5 | 6 | /** 7 | * Interface for deserializing stats from persistent data containers. 8 | * This separates the responsibility of persistence from the stat behavior. 9 | * 10 | * @param The type of stat this deserializer creates 11 | */ 12 | public interface StatDeserializer> extends CustomDeserializer { 13 | 14 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/AncientShovel.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:ancient_shovel") 11 | @FallbackItem(value = Material.NETHERITE_SHOVEL, keepRecipes = true) 12 | public class AncientShovel extends Sword { 13 | 14 | public AncientShovel() { 15 | super("Ancient Shovel", Material.NETHERITE_SHOVEL, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/Pickaxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import me.mykindos.betterpvp.core.item.ItemRarity; 4 | import me.mykindos.betterpvp.core.item.component.impl.runes.RuneContainerComponent; 5 | import me.mykindos.betterpvp.core.item.model.VanillaItem; 6 | import org.bukkit.Material; 7 | import org.bukkit.inventory.ItemStack; 8 | 9 | public class Pickaxe extends VanillaItem { 10 | 11 | public Pickaxe(String name, Material material, ItemRarity rarity) { 12 | super(name, ItemStack.of(material), rarity); 13 | addSerializableComponent(new RuneContainerComponent(2)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/Shovel.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import me.mykindos.betterpvp.core.item.ItemRarity; 4 | import me.mykindos.betterpvp.core.item.component.impl.runes.RuneContainerComponent; 5 | import me.mykindos.betterpvp.core.item.model.VanillaItem; 6 | import net.kyori.adventure.text.Component; 7 | import org.bukkit.Material; 8 | 9 | public class Shovel extends VanillaItem { 10 | 11 | public Shovel(String name, Material material, ItemRarity rarity) { 12 | super(Component.text(name), material, rarity); 13 | addSerializableComponent(new RuneContainerComponent(2)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/Sword.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import me.mykindos.betterpvp.core.item.ItemRarity; 4 | import me.mykindos.betterpvp.core.item.component.impl.runes.RuneContainerComponent; 5 | import me.mykindos.betterpvp.core.item.model.VanillaItem; 6 | import net.kyori.adventure.text.Component; 7 | import org.bukkit.Material; 8 | 9 | public class Sword extends VanillaItem { 10 | 11 | public Sword(String name, Material material, ItemRarity rarity) { 12 | super(Component.text(name), material, rarity); 13 | addSerializableComponent(new RuneContainerComponent(2)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /game/src/main/java/me/mykindos/betterpvp/game/database/jooq/Tables.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is generated by jOOQ. 3 | */ 4 | package me.mykindos.betterpvp.game.database.jooq; 5 | 6 | 7 | import me.mykindos.betterpvp.game.database.jooq.tables.ChampionsHotbarLayouts; 8 | 9 | 10 | /** 11 | * Convenience access to all tables in public. 12 | */ 13 | @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) 14 | public class Tables { 15 | 16 | /** 17 | * The table public.champions_hotbar_layouts. 18 | */ 19 | public static final ChampionsHotbarLayouts CHAMPIONS_HOTBAR_LAYOUTS = ChampionsHotbarLayouts.CHAMPIONS_HOTBAR_LAYOUTS; 20 | } 21 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/combat/events/EntityCanHurtEntityEvent.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.combat.events; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import me.mykindos.betterpvp.core.framework.events.CustomEvent; 6 | import org.bukkit.entity.LivingEntity; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Data 10 | public class EntityCanHurtEntityEvent extends CustomEvent { 11 | 12 | private final LivingEntity damager; 13 | private final LivingEntity damagee; 14 | private Result result = Result.ALLOW; 15 | 16 | public boolean isAllowed() { 17 | return result == Result.ALLOW; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/discord/embeds/EmbedObject.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.discord.embeds; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Singular; 6 | 7 | import java.awt.Color; 8 | import java.util.List; 9 | 10 | @Builder 11 | @Getter 12 | public class EmbedObject 13 | { 14 | private String title; 15 | private String description; 16 | private String url; 17 | private Color color; 18 | 19 | private EmbedFooter footer; 20 | private String thumbnail; 21 | private String image; 22 | private EmbedAuthor author; 23 | 24 | @Singular 25 | private List fields; 26 | 27 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/effects/types/positive/JumpBoostEffect.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.effects.types.positive; 2 | 3 | import me.mykindos.betterpvp.core.effects.VanillaEffectType; 4 | import org.bukkit.potion.PotionEffectType; 5 | 6 | public class JumpBoostEffect extends VanillaEffectType { 7 | 8 | @Override 9 | public String getName() { 10 | return "Jump Boost"; 11 | } 12 | 13 | @Override 14 | public boolean isNegative() { 15 | return false; 16 | } 17 | 18 | @Override 19 | public PotionEffectType getVanillaPotionType() { 20 | return PotionEffectType.JUMP_BOOST; 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/component/serialization/ComponentDeserializer.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.component.serialization; 2 | 3 | import me.mykindos.betterpvp.core.item.component.ItemComponent; 4 | import me.mykindos.betterpvp.core.item.serialization.CustomDeserializer; 5 | 6 | /** 7 | * Interface for deserializing components from persistent data containers. 8 | * This separates the responsibility of persistence from the component behavior. 9 | * 10 | * @param The type of component this deserializer creates 11 | */ 12 | public interface ComponentDeserializer extends CustomDeserializer { 13 | 14 | } -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/item/impl/BoosterPickaxe.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.item.impl; 2 | 3 | import com.google.inject.Singleton; 4 | import me.mykindos.betterpvp.core.item.FallbackItem; 5 | import me.mykindos.betterpvp.core.item.ItemKey; 6 | import me.mykindos.betterpvp.core.item.ItemRarity; 7 | import org.bukkit.Material; 8 | 9 | @Singleton 10 | @ItemKey("core:booster_pickaxe") 11 | @FallbackItem(value = Material.GOLDEN_PICKAXE, keepRecipes = true) 12 | public class BoosterPickaxe extends Sword { 13 | 14 | public BoosterPickaxe() { 15 | super("Booster Pickaxe", Material.GOLDEN_PICKAXE, ItemRarity.UNCOMMON); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/main/java/me/mykindos/betterpvp/core/client/offlinemessages/menu/OfflineMessagesMenu.java: -------------------------------------------------------------------------------- 1 | package me.mykindos.betterpvp.core.client.offlinemessages.menu; 2 | 3 | import me.mykindos.betterpvp.core.menu.Windowed; 4 | import me.mykindos.betterpvp.core.menu.impl.ViewDescribableMenu; 5 | import me.mykindos.betterpvp.core.utilities.model.description.Describable; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | import java.util.List; 9 | 10 | public class OfflineMessagesMenu extends ViewDescribableMenu { 11 | public OfflineMessagesMenu(@NotNull String title, @NotNull List pool, Windowed previous) { 12 | super(title, pool, previous); 13 | } 14 | } 15 | --------------------------------------------------------------------------------