Skip to content

GH-343 fix: block namespaced commands during combat and add regression test#343

Open
vLuckyyy wants to merge 3 commits intomasterfrom
fix/namespaced-command-bypass
Open

GH-343 fix: block namespaced commands during combat and add regression test#343
vLuckyyy wants to merge 3 commits intomasterfrom
fix/namespaced-command-bypass

Conversation

@vLuckyyy
Copy link
Member

No description provided.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @vLuckyyy, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refactors the command blocking mechanism during combat by introducing a specialized controller. This change enhances the accuracy and reliability of command restriction, particularly for namespaced commands, and improves testability by adding dedicated unit tests for the new logic. The overall impact is a more robust and maintainable system for managing player actions during combat.

Highlights

  • New Command Blocking Controller: Introduced a dedicated FightCommandController to centralize and improve the logic for blocking commands during combat, separating it from the general FightActionBlockerController.
  • Enhanced Command Parsing: The new command controller includes robust logic to normalize commands, correctly handling leading slashes, namespaced commands (e.g., /minecraft:tp), and collapsing multiple spaces for accurate matching against restricted lists.
  • Regression Tests for Command Logic: Added comprehensive unit tests for the FightCommandController's normalizeCommand and matches methods, ensuring the command blocking logic functions as expected for various input formats.
  • Build System Updates: Updated Gradle build files to include necessary test dependencies like MockBukkit and Mockito, and the JUnit Platform Launcher, facilitating better unit testing practices.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • buildSrc/src/main/kotlin/eternalcombat-java-unit-test.gradle.kts
    • Added junit-platform-launcher as a test runtime dependency.
  • eternalcombat-plugin/build.gradle.kts
    • Applied the eternalcombat-java-unit-test plugin.
    • Added mockbukkit-v1.21 and mockito-core as test implementation dependencies.
  • eternalcombat-plugin/src/main/java/com/eternalcode/combat/CombatPlugin.java
    • Imported FightCommandController.
    • Registered FightCommandController in the plugin's onEnable method.
  • eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightActionBlockerController.java
    • Removed imports for WhitelistBlacklistMode and StringUtil.
    • Removed the onPlayerCommandPreprocess event handler, delegating command blocking to the new controller.
  • eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/controller/FightCommandController.java
    • Added a new class FightCommandController to handle command blocking during combat.
    • Implemented static utility methods normalizeCommand and matches for robust command parsing and comparison.
    • Implemented an onPlayerCommandPreprocess event handler to cancel restricted commands for players in combat.
  • eternalcombat-plugin/test/com/eternalcode/combat/fight/controller/FightCommandControllerTest.java
    • Added unit tests for the normalizeCommand method, covering various command formats including namespaces and whitespace.
    • Added unit tests for the matches method, verifying correct command matching against restricted lists with exact and prefix matches.
Activity
  • No human activity (comments, reviews) has been recorded on this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request correctly addresses the issue of namespaced commands not being blocked during combat by refactoring the command checking logic into a new FightCommandController. The new implementation properly normalizes commands, stripping namespaces before checking them against the restricted list. The addition of unit tests for the new normalization and matching logic is a great improvement that ensures the fix is robust and prevents future regressions. My review includes a couple of suggestions: one important fix for a dependency in the build configuration and a minor performance improvement in the new controller.

@vLuckyyy vLuckyyy changed the title fix: block namespaced commands during combat and add regression test GH-343 fix: block namespaced commands during combat and add regression test Feb 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant