From 6701fef387063a53946d6c086fcea00a5c03b2af Mon Sep 17 00:00:00 2001 From: Intybyte Date: Wed, 14 Jan 2026 09:36:28 +0100 Subject: [PATCH 1/2] Add command completion for projectiles and designs arguments --- .../pavlov/cannons/commands/CannonsCommandManager.java | 9 +++++++++ .../main/java/at/pavlov/cannons/commands/Commands.java | 2 ++ 2 files changed, 11 insertions(+) diff --git a/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/CannonsCommandManager.java b/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/CannonsCommandManager.java index a0c61fa7..cb19ccd1 100644 --- a/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/CannonsCommandManager.java +++ b/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/CannonsCommandManager.java @@ -1,6 +1,8 @@ package at.pavlov.cannons.commands; import at.pavlov.cannons.Enum.SelectCannon; +import at.pavlov.cannons.cannon.DesignStorage; +import at.pavlov.cannons.projectile.ProjectileStorage; import co.aikar.commands.CommandIssuer; import co.aikar.commands.InvalidCommandArgument; import co.aikar.commands.PaperCommandManager; @@ -15,6 +17,13 @@ public class CannonsCommandManager extends PaperCommandManager { public CannonsCommandManager(Plugin plugin) { super(plugin); this.registerContexts(); + this.registerCompletions(); + } + + private void registerCompletions() { + var completions = this.getCommandCompletions(); + completions.registerAsyncCompletion("designs", c -> DesignStorage.getInstance().getDesignIds()); + completions.registerAsyncCompletion("projectiles", c -> ProjectileStorage.getProjectileIds()); } private void registerContexts() { diff --git a/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/Commands.java b/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/Commands.java index 6dafbdc7..885e196e 100644 --- a/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/Commands.java +++ b/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/Commands.java @@ -164,6 +164,7 @@ public static void onList(CommandSender sender, @Optional String arg) { @Subcommand("create") @Syntax("[DESIGN]") + @CommandCompletion("@designs") @CommandPermission("cannons.admin.create") public static void onCreate(Player player, String arg) { //check if the design name is valid @@ -182,6 +183,7 @@ public static void onCreate(Player player, String arg) { @Subcommand("give") @Syntax("[PROJECTILE] ") + @CommandCompletion("@projectiles @range:1-64") @CommandPermission("cannons.admin.give") public static void onGive(Player player, String projectileString, @Default("1") int amount) { //check if the projectile id is valid From b265debf632812b1c55fa9d809491fe728805a78 Mon Sep 17 00:00:00 2001 From: Intybyte Date: Wed, 14 Jan 2026 15:00:07 +0100 Subject: [PATCH 2/2] Add wiki command and link --- .../at/pavlov/cannons/Enum/MessageEnum.java | 262 +++++++++--------- .../at/pavlov/cannons/commands/Commands.java | 5 + .../src/main/resources/localization/en_US.yml | 1 + 3 files changed, 133 insertions(+), 135 deletions(-) diff --git a/cannons-bukkit/src/main/java/at/pavlov/cannons/Enum/MessageEnum.java b/cannons-bukkit/src/main/java/at/pavlov/cannons/Enum/MessageEnum.java index 87001ceb..63dff77f 100644 --- a/cannons-bukkit/src/main/java/at/pavlov/cannons/Enum/MessageEnum.java +++ b/cannons-bukkit/src/main/java/at/pavlov/cannons/Enum/MessageEnum.java @@ -1,149 +1,141 @@ package at.pavlov.cannons.Enum; -public enum MessageEnum -{ - //Error Messages - ErrorFiringInProgress ("Error.FiringInProgress", true), - ErrorLoadingInProgress ("Error.LoadingInProgress", true), - ErrorBarrelTooHot ("Error.BarrelTooHot", true), - ErrorNotCleaned ("Error.NotCleaned", true), - ErrorNoGunpowder ("Error.NoGunpowder", true), - ErrorNoGunpowderNeeded ("Error.NoGunpowderNeeded", true), - ErrorNoProjectile ("Error.NoProjectile", true), - ErrorNoGunpowderInChest ("Error.NoGunpowderInChest", true), - ErrorNoProjectileInChest ("Error.NoProjectileInChest", true), - ErrorNotPushed ("Error.NotPushed", true), - ErrorNoFlintAndSteel ("Error.NoFlintAndSteel", true), - ErrorMaximumGunpowderLoaded ("Error.MaximumGunpowderLoaded", true), - ErrorProjectileAlreadyLoaded ("Error.ProjectileAlreadyLoaded", true), - ErrorCannonBuiltLimit ("Error.CannonBuiltLimit", true), - ErrorNotTheOwner ("Error.NotTheOwner", true), - ErrorDismantlingNotOwner ("Error.DismantlingNotOwner", true), - ErrorMissingSign ("Error.MissingSign", true), - ErrorNoMoney ("Error.NoMoney", true), - ErrorNotPaid ("Error.NotPaid", true), - ErrorAlreadyPaid ("Error.AlreadyPaid", true), - ErrorPlayerNotFound ("Error.PlayerNotFound", true), - ErrorGeneric ("Error.Generic", true), +import lombok.Getter; + +@Getter +public enum MessageEnum { + //Error Messages + ErrorFiringInProgress("Error.FiringInProgress", true), + ErrorLoadingInProgress("Error.LoadingInProgress", true), + ErrorBarrelTooHot("Error.BarrelTooHot", true), + ErrorNotCleaned("Error.NotCleaned", true), + ErrorNoGunpowder("Error.NoGunpowder", true), + ErrorNoGunpowderNeeded("Error.NoGunpowderNeeded", true), + ErrorNoProjectile("Error.NoProjectile", true), + ErrorNoGunpowderInChest("Error.NoGunpowderInChest", true), + ErrorNoProjectileInChest("Error.NoProjectileInChest", true), + ErrorNotPushed("Error.NotPushed", true), + ErrorNoFlintAndSteel("Error.NoFlintAndSteel", true), + ErrorMaximumGunpowderLoaded("Error.MaximumGunpowderLoaded", true), + ErrorProjectileAlreadyLoaded("Error.ProjectileAlreadyLoaded", true), + ErrorCannonBuiltLimit("Error.CannonBuiltLimit", true), + ErrorNotTheOwner("Error.NotTheOwner", true), + ErrorDismantlingNotOwner("Error.DismantlingNotOwner", true), + ErrorMissingSign("Error.MissingSign", true), + ErrorNoMoney("Error.NoMoney", true), + ErrorNotPaid("Error.NotPaid", true), + ErrorAlreadyPaid("Error.AlreadyPaid", true), + ErrorPlayerNotFound("Error.PlayerNotFound", true), + ErrorGeneric("Error.Generic", true), //Commands - CmdSelectCannon ("Commands.SelectCannon"), - CmdSelectBlock ("Commands.SelectBlock"), - CmdSelectCanceled ("Commands.SelectCanceled"), - CmdCannonNotFound ("Commands.CannonNotFound"), - CmdNoSentryWhitelist ("Commands.NoSentryWhitelist"), - CmdAddedWhitelist ("Commands.AddedWhitelist"), - CmdRemovedWhitelist ("Commands.RemovedWhitelist"), - CmdRemovedWhitelistOwner ("Commands.RemovedWhitelistOwner"), - CmdToggledTargetMob ("Commands.ToggledTargetMob"), - CmdToggledTargetPlayer ("Commands.ToggledTargetPlayer"), - CmdToggledTargetCannon ("Commands.ToggledTargetCannon"), - CmdToggledTargetOther ("Commands.ToggledTargetOther"), - CmdBuyCannon ("Commands.BuyCannon"), - CmdPaidCannon ("Commands.PaidCannon"), - CmdClaimCannonsStarted ("Commands.ClaimCannonsStarted"), - CmdClaimCannonsFinished ("Commands.ClaimCannonsFinished"), - - //Aiming - SettingCombinedAngle ("Aiming.SettingCombinedAngle"), - SettingVerticalAngleUp ("Aiming.SettingVerticalAngleUp"), - SettingVerticalAngleDown ("Aiming.SettingVerticalAngleDown"), - SettingHorizontalAngleRight ("Aiming.SettingHorizontalAngleRight"), - SettingHorizontalAngleLeft ("Aiming.SettingHorizontalAngleLeft"), - AimingModeEnabled ("Aiming.EnableAimingMode"), - AimingModeDisabled ("Aiming.DisableAimingMode"), - AimingModeTooFarAway ("Aiming.TooFarForAimingMode"), - - //load - loadProjectile ("Load.Projectile"), - loadGunpowder ("Load.Gunpowder"), - loadGunpowderAndProjectile ("Load.GunpowderAndProjectile"), - loadGunpowderNormalLimit ("Load.loadGunpowderNormalLimit"), - loadOverloadedGunpowder ("Load.OverloadedGunpowder"), - - //cannon - CannonCreated ("Cannon.Created"), - CannonDismantled ("Cannon.Dismantled"), - CannonDestroyed ("Cannon.Destroyed"), - CannonsReseted ("Cannon.Reseted"), - CannonFire ("Cannon.Fire"), - CannonObserverAdded ("Cannon.ObserverAdded"), - CannonObserverRemoved ("Cannon.ObserverRemoved"), - CannonInfo ("Cannon.Info"), - CannonRenameSuccess ("Cannon.RenameSuccess"), - CannonRenameFail ("Cannon.RenameFail"), + CmdSelectCannon("Commands.SelectCannon"), + CmdSelectBlock("Commands.SelectBlock"), + CmdSelectCanceled("Commands.SelectCanceled"), + CmdCannonNotFound("Commands.CannonNotFound"), + CmdNoSentryWhitelist("Commands.NoSentryWhitelist"), + CmdAddedWhitelist("Commands.AddedWhitelist"), + CmdRemovedWhitelist("Commands.RemovedWhitelist"), + CmdRemovedWhitelistOwner("Commands.RemovedWhitelistOwner"), + CmdToggledTargetMob("Commands.ToggledTargetMob"), + CmdToggledTargetPlayer("Commands.ToggledTargetPlayer"), + CmdToggledTargetCannon("Commands.ToggledTargetCannon"), + CmdToggledTargetOther("Commands.ToggledTargetOther"), + CmdBuyCannon("Commands.BuyCannon"), + CmdPaidCannon("Commands.PaidCannon"), + CmdClaimCannonsStarted("Commands.ClaimCannonsStarted"), + CmdClaimCannonsFinished("Commands.ClaimCannonsFinished"), + + //Aiming + SettingCombinedAngle("Aiming.SettingCombinedAngle"), + SettingVerticalAngleUp("Aiming.SettingVerticalAngleUp"), + SettingVerticalAngleDown("Aiming.SettingVerticalAngleDown"), + SettingHorizontalAngleRight("Aiming.SettingHorizontalAngleRight"), + SettingHorizontalAngleLeft("Aiming.SettingHorizontalAngleLeft"), + AimingModeEnabled("Aiming.EnableAimingMode"), + AimingModeDisabled("Aiming.DisableAimingMode"), + AimingModeTooFarAway("Aiming.TooFarForAimingMode"), + + //load + loadProjectile("Load.Projectile"), + loadGunpowder("Load.Gunpowder"), + loadGunpowderAndProjectile("Load.GunpowderAndProjectile"), + loadGunpowderNormalLimit("Load.loadGunpowderNormalLimit"), + loadOverloadedGunpowder("Load.OverloadedGunpowder"), + + //cannon + CannonCreated("Cannon.Created"), + CannonDismantled("Cannon.Dismantled"), + CannonDestroyed("Cannon.Destroyed"), + CannonsReseted("Cannon.Reseted"), + CannonFire("Cannon.Fire"), + CannonObserverAdded("Cannon.ObserverAdded"), + CannonObserverRemoved("Cannon.ObserverRemoved"), + CannonInfo("Cannon.Info"), + CannonRenameSuccess("Cannon.RenameSuccess"), + CannonRenameFail("Cannon.RenameFail"), //projectile - ProjectileExplosion ("Projectile.Explosion"), - ProjectileCanceled ("Projectile.Canceled"), + ProjectileExplosion("Projectile.Explosion"), + ProjectileCanceled("Projectile.Canceled"), //heatManagement - HeatManagementBurn ("HeatManagement.Burn"), - HeatManagementCooling ("HeatManagement.Cooling"), - HeatManagementInfo ("HeatManagement.Info"), - HeatManagementCritical ("HeatManagement.Critical"), - HeatManagementOverheated ("HeatManagement.Overheated"), + HeatManagementBurn("HeatManagement.Burn"), + HeatManagementCooling("HeatManagement.Cooling"), + HeatManagementInfo("HeatManagement.Info"), + HeatManagementCritical("HeatManagement.Critical"), + HeatManagementOverheated("HeatManagement.Overheated"), //ramrod - RamrodCleaning ("Ramrod.Cleaning"), - RamrodCleaningDone ("Ramrod.CleaningDone"), - RamrodPushingProjectile ("Ramrod.PushingProjectile"), - RamrodPushingProjectileDone ("Ramrod.PushingProjectileDone"), + RamrodCleaning("Ramrod.Cleaning"), + RamrodCleaningDone("Ramrod.CleaningDone"), + RamrodPushingProjectile("Ramrod.PushingProjectile"), + RamrodPushingProjectileDone("Ramrod.PushingProjectileDone"), //imitatedEffects - ImitatedEffectsEnabled ("ImitatedEffects.Enabled"), - ImitatedEffectsDisabled ("ImitatedEffects.Disabled"), - - //Permission - PermissionErrorRedstone ("Permission.ErrorRedstone", true), - PermissionErrorDismantle ("Permission.ErrorDismantle", true), - PermissionErrorBuild ("Permission.ErrorBuild", true), - PermissionErrorRename ("Permission.ErrorRename", true), - PermissionErrorFire ("Permission.ErrorFire", true), - PermissionErrorLoad ("Permission.ErrorLoad", true), - PermissionErrorAdjust ("Permission.ErrorAdjust", true), - PermissionErrorAutoaim ("Permission.ErrorAutoaim", true), - PermissionErrorObserver ("Permission.ErrorObserver", true), - PermissionErrorProjectile ("Permission.ErrorProjectile", true), - PermissionErrorThermometer ("Permission.ErrorThermometer", true), - PermissionErrorRamrod ("Permission.ErrorRamrod", true), - - //Death - DeathMessage1 ("Death.message1"), - DeathMessage2 ("Death.message2"), - DeathMessage3 ("Death.message3"), - - //Help - HelpText ("Help.Text"), - HelpBuild ("Help.Build"), - HelpFire ("Help.Fire"), - HelpAdjust ("Help.Adjust"); - - - private final String str; - private final boolean isError; - - MessageEnum(String str, boolean e) - { - this.str = str; + ImitatedEffectsEnabled("ImitatedEffects.Enabled"), + ImitatedEffectsDisabled("ImitatedEffects.Disabled"), + + //Permission + PermissionErrorRedstone("Permission.ErrorRedstone", true), + PermissionErrorDismantle("Permission.ErrorDismantle", true), + PermissionErrorBuild("Permission.ErrorBuild", true), + PermissionErrorRename("Permission.ErrorRename", true), + PermissionErrorFire("Permission.ErrorFire", true), + PermissionErrorLoad("Permission.ErrorLoad", true), + PermissionErrorAdjust("Permission.ErrorAdjust", true), + PermissionErrorAutoaim("Permission.ErrorAutoaim", true), + PermissionErrorObserver("Permission.ErrorObserver", true), + PermissionErrorProjectile("Permission.ErrorProjectile", true), + PermissionErrorThermometer("Permission.ErrorThermometer", true), + PermissionErrorRamrod("Permission.ErrorRamrod", true), + + //Death + DeathMessage1("Death.message1"), + DeathMessage2("Death.message2"), + DeathMessage3("Death.message3"), + + //Help + HelpText("Help.Text"), + HelpBuild("Help.Build"), + HelpFire("Help.Fire"), + HelpAdjust("Help.Adjust"), + HelpWiki("Help.Wiki"); + + + private final String string; + private final boolean isError; + + MessageEnum(String string, boolean e) { + this.string = string; this.isError = e; - } - MessageEnum(String str) - { - this.str = str; - isError = false; - } - - public String getString() - { - return str; - } - public boolean isValid() - { - return !isError; - } - public boolean isError() - { - return isError; - } + } + + MessageEnum(String string) { + this(string, false); + } + + public boolean isValid() { + return !isError; + } } diff --git a/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/Commands.java b/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/Commands.java index 885e196e..c204a338 100644 --- a/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/Commands.java +++ b/cannons-bukkit/src/main/java/at/pavlov/cannons/commands/Commands.java @@ -69,6 +69,11 @@ public static void onHelpCommand(Player sender) { userMessages.sendMessage(MessageEnum.HelpText, sender); } + @Subcommand("wiki") + public static void onWiki(Player sender) { + userMessages.sendMessage(MessageEnum.HelpWiki, sender); + } + @Subcommand("reload") @CommandPermission("cannons.admin.reload") public static void onReload(CommandSender sender) { diff --git a/cannons-bukkit/src/main/resources/localization/en_US.yml b/cannons-bukkit/src/main/resources/localization/en_US.yml index ec9dc382..eed34cd2 100644 --- a/cannons-bukkit/src/main/resources/localization/en_US.yml +++ b/cannons-bukkit/src/main/resources/localization/en_US.yml @@ -155,3 +155,4 @@ Help: NEWLINE YELLOW Shift right click will decrease the angle. NEWLINE YELLOW Clicking on the top of the barrel will change the vertical angle. NEWLINE YELLOW Clicking on the side will change the horizontal angle.' + Wiki: "GREEN [Cannons] You can find additional information at: https://github.com/Intybyte/Cannons/wiki"