Upgrade to java 21 and gradle 9#6
Conversation
rjhancock
commented
Apr 25, 2026
- Adds GitHub Actions
- Update build scripts to work with MM repos.
There was a problem hiding this comment.
Pull request overview
This PR migrates the MekWars codebase toward a Gradle multi-project build targeting Java 21, updates the Gradle wrapper, and introduces several GitHub Actions workflows for CI/QA/doc generation.
Changes:
- Replaces composite-build setup with explicit included subprojects in
settings.gradle. - Upgrades build tooling (Java toolchain 21, updated Gradle wrapper scripts/properties).
- Adds GitHub Actions workflows and broadens
.gitignoreto exclude IDE/build artifacts.
Reviewed changes
Copilot reviewed 47 out of 228 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| settings.gradle | Switches to explicit multi-project includes (now missing MekWars include). |
| gradlew.bat | Updates wrapper launcher behavior and stderr output. |
| gradlew | Updates wrapper launcher behavior to -jar style and script modernizations. |
| gradle/wrapper/gradle-wrapper.properties | Updates Gradle distribution URL. |
| build.gradle | Sets Java 21 toolchain and repositories at root. |
| Common/build.gradle | Adds a Gradle module definition for Common (plugins/sourceSets). |
| HPGNet/build.gradle | Adds a Gradle module definition for HPGNet. |
| MekWarsAdmin/build.gradle | Adds a Gradle module definition for MekWarsAdmin. |
| MekWarsAutoUpdate/build.gradle | Adds a Gradle module definition for MekWarsAutoUpdate. |
| MekWarsClient/build.gradle | Adds a Gradle module definition for MekWarsClient. |
| MekWarsDedicated/build.gradle | Adds a Gradle module definition for MekWarsDedicated. |
| MekWarsOpEditor/build.gradle | Adds a Gradle module definition for MekWarsOpEditor. |
| MekWarsServer/build.gradle | Adds a Gradle module definition for MekWarsServer. |
| MekWarsTracker/build.gradle | Adds a Gradle module definition for MekWarsTracker. |
| PlanetDataConverter/build.gradle | Adds a Gradle module definition for PlanetDataConverter. |
| MekWars/build.gradle | Adds Java 21 toolchain and imports the legacy Ant build. |
| MekWars/src/.vscode/settings.json | Removes VS Code project settings from repo. |
| MekWars/src/.vscode/launch.json | Removes VS Code launch configs from repo. |
| .vscode/settings.json | Removes VS Code project settings from repo. |
| .vscode/launch.json | Removes VS Code launch configs from repo. |
| MekWars/.gitignore | Removes MekWars-local ignore file. |
| MekWars/.gitattributes | Removes MekWars-local gitattributes. |
| LICENSE | Formatting tweak to GPL header line. |
| .gradle/buildOutputCleanup/cache.properties | Removes tracked Gradle cache metadata. |
| .idea/vcs.xml | Removes IntelliJ project metadata. |
| .idea/misc.xml | Removes IntelliJ project metadata. |
| .idea/jarRepositories.xml | Removes IntelliJ project metadata. |
| .idea/gradle.xml | Removes IntelliJ project metadata. |
| .idea/compiler.xml | Removes IntelliJ project metadata. |
| .idea/.name | Removes IntelliJ project metadata. |
| .gitignore | Expands ignores to cover IDE/build/Gradle artifacts. |
| .github/workflows/ci.yml | Adds PR CI workflow (currently assumes MegaMek repo layout). |
| .github/workflows/checkstyle.yml | Adds Checkstyle workflow (assumes MegaMek repo layout). |
| .github/workflows/code-coverage.yml | Adds coverage workflow (assumes MegaMek repo layout). |
| .github/workflows/codeql-analysis.yml | Adds CodeQL workflow. |
| .github/workflows/dependency-scan.yml | Adds Gradle dependency submission workflow. |
| .github/workflows/java-doc.yml | Adds JavaDoc + Pages publish workflow (assumes MegaMek repo layout). |
| .github/workflows/java-doc-on-pr.yml | Adds JavaDoc-on-PR workflow (assumes MegaMek repo layout). |
| .github/workflows/nightly-ci.yml | Adds nightly CI workflow (assumes MegaMek repo layout). |
| .github/workflows/qa-test-build.yml | Adds QA build workflow (assumes MegaMek repo layout; summary mismatch). |
| .github/dependabot.yml | Adds Dependabot for GitHub Actions updates. |
| .github/codecov.yml | Adds Codecov configuration. |
| .github/ISSUE_TEMPLATE/config.yml | Adds issue template configuration. |
| .github/ISSUE_TEMPLATE/bug_report.yml | Adds bug report template. |
| .github/ISSUE_TEMPLATE/request_for_enhancement.yml | Adds enhancement request template. |
| MekWarsAdmin/src/mekwars/admin/dialog/BannedTargetingDialog.java | Adds/ports banned targeting editor dialog. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/VotingPanel.java | Adds/ports voting configuration panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/UnitResearchPanel.java | Adds/ports unit research configuration panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/TrackerPanel.java | Adds/ports tracker configuration panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/TechnologyResearchPanel.java | Adds/ports technology research configuration panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/SinglePlayerFactionPanel.java | Adds/ports single-player faction config panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/SchedulerPanel.java | Adds/ports scheduler config panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/PilotSkillTextField.java | Adds/ports a JTextField specialization for pilot skills. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/PathsPanel.java | Adds/ports HTML/path configuration panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/NoPlayPanel.java | Adds/ports no-play configuration panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/NewbieHousePanel.java | Adds/ports newbie/SOL configuration panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/InfluencePanel.java | Adds/ports influence configuration panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/FactoryPurchasePanel.java | Adds/ports factory purchase config panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/DiscordAndDjangoPanel.java | Adds/ports Discord/Django integration config panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/DisconnectionPanel.java | Adds/ports disconnection handling config panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/ChristmasUnitPanel.java | Adds/ports Christmas units configuration panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/ChristmasPanel.java | Adds/ports Christmas season configuration panel. |
| MekWarsAdmin/src/mekwars/admin/dialog/serverConfigDialogs/BattleValuePanel.java | Adds/ports BV/force size rules configuration panel. |
| Common/src/mekwars/common/util/unitdamage/AbstractUnitDamageHandler.java | Adds unit damage handler abstraction. |
| Common/src/mekwars/common/util/unitdamage/UnitDamageHandlerFactory.java | Adds handler factory by MegaMek Entity subtype. |
| Common/src/mekwars/common/util/unitdamage/AeroDamageHandler.java | Adds aero damage handler stub. |
| Common/src/mekwars/common/util/unitdamage/BattleArmorDamageHandler.java | Adds BA damage handler stub. |
| Common/src/mekwars/common/util/unitdamage/InfantryDamageHandler.java | Adds infantry damage handler stub. |
| Common/src/mekwars/common/util/unitdamage/ProtoDamageHandler.java | Adds proto damage handler stub. |
| Common/src/mekwars/common/util/unitdamage/GenericDamageHandler.java | Adds generic damage handler stub. |
| Common/src/mekwars/common/util/TokenReader.java | Adds tokenizer helpers. |
| Common/src/mekwars/common/util/ThreadManager.java | Adds executor-backed thread pool helper. |
| Common/src/mekwars/common/util/TeePrinter.java | Adds Writer tee implementation. |
| Common/src/mekwars/common/util/StringUtils.java | Adds string/color helper utilities. |
| Common/src/mekwars/common/util/SpringLayoutHelper.java | Adds SpringLayout grid helper. |
| Common/src/mekwars/common/util/Position.java | Adds position utility (distance method naming mismatch). |
| Common/src/mekwars/common/util/MekwarsFileReader.java | Adds file reader wrapper. |
| Common/src/mekwars/common/util/MMNetXStream.java | Adds XStream wrapper with aliases/marshalling strategy. |
| Common/src/mekwars/common/util/ComponentToCritsConverter.java | Adds component-to-crits converter. |
| Common/src/mekwars/common/util/BinWriter.java | Adds binary-ish writer (has line.separator typo). |
| Common/src/mekwars/common/util/BinReader.java | Adds binary-ish reader. |
| Common/src/mekwars/common/persistence/BinWriter.java | Adds compact persistence writer. |
| Common/src/mekwars/common/persistence/BinReader.java | Adds compact persistence reader (boolean parsing bug). |
| Common/src/mekwars/common/flags/PlayerFlags.java | Adds player flags persistence wrapper. |
| Common/src/mekwars/common/flags/ResultsFlags.java | Adds results flags with applies-to semantics (stdout debug). |
| Common/src/mekwars/common/comm/ICommand.java | Adds command interface. |
| Common/src/mekwars/common/comm/ClientCommand.java | Adds client command interface. |
| Common/src/mekwars/common/comm/ServerCommand.java | Adds server command interface. |
| Common/src/mekwars/common/comm/Command.java | Adds base command implementation (typo in messages). |
| Common/src/mekwars/common/campaign/targetsystems/TargetTypeOutOfBoundsException.java | Adds exception type. |
| Common/src/mekwars/common/campaign/targetsystems/TargetTypeNotImplementedException.java | Adds exception type (constructors largely stubbed). |
| Common/src/mekwars/common/campaign/pilot/skills/IPilotSkill.java | Adds pilot skill interface. |
| Common/src/mekwars/common/campaign/pilot/skills/PilotSkills.java | Adds pilot skill collection wrapper. |
| Common/src/mekwars/common/campaign/operations/ModifyingOperation.java | Adds modifying-operation container. |
| Common/src/mekwars/common/campaign/clientutils/protocol/IClient.java | Adds protocol client interface. |
| Common/src/mekwars/common/campaign/clientutils/protocol/IConnectionListener.java | Adds connection listener interface. |
| Common/src/mekwars/common/campaign/clientutils/protocol/IConnectionHandler.java | Adds connection handler interface. |
| Common/src/mekwars/common/campaign/clientutils/protocol/CConnector.java | Adds socket connector. |
| Common/src/mekwars/common/campaign/clientutils/protocol/ConnectionHandlerLocal.java | Adds socket handler + writer thread. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/IProtCommand.java | Adds protocol command interface. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/CProtCommand.java | Adds protocol command base class. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/CommPCmd.java | Adds comm protocol command. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/PingPCmd.java | Adds ping protocol command. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/PongPCmd.java | Adds pong protocol command. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/AckSignonPCmd.java | Adds ack signon protocol command (logs to err+info). |
| Common/src/mekwars/common/campaign/clientutils/IClientConfig.java | Adds client config interface. |
| Common/src/mekwars/common/campaign/clientutils/IClientUser.java | Adds client user interface. |
| Common/src/mekwars/common/campaign/clientutils/IGameHost.java | Adds game host interface (method name typo). |
| Common/src/mekwars/common/campaign/Buildings.java | Adds buildings template container. |
| Common/src/mekwars/common/TerrainProvider.java | Adds terrain provider interface. |
| Common/src/mekwars/common/Terrain.java | Adds terrain container with binIn/binOut. |
| Common/src/mekwars/common/SubFaction.java | Adds subfaction settings container. |
| Common/src/mekwars/common/MutableSerializable.java | Adds mutable-serialization interface. |
| Common/src/mekwars/common/MegaMekPilotOption.java | Adds pilot option container. |
| Common/src/mekwars/common/MWXmlSerializable.java | Adds XML serialization interface. |
| Common/src/mekwars/common/MWXMLWriter.java | Adds XML writer using XStream. |
| Common/src/mekwars/common/MMGame.java | Adds MMGame container. |
| Common/src/mekwars/common/GameInterface.java | Adds game interface abstraction. |
| Common/src/mekwars/common/GameWrapper.java | Adds wrapper over MegaMek Game (debug/error logging). |
| Common/src/mekwars/common/Equipment.java | Adds equipment container. |
| Common/src/mekwars/common/Continent.java | Adds continent container (equals bug). |
| Common/src/mekwars/common/BMEquipment.java | Adds black market equipment container. |
Files not reviewed (8)
- .idea/.name: Language not supported
- .idea/compiler.xml: Language not supported
- .idea/gradle.xml: Language not supported
- .idea/inspectionProfiles/Project_Default.xml: Language not supported
- .idea/jarRepositories.xml: Language not supported
- .idea/misc.xml: Language not supported
- .idea/vcs.xml: Language not supported
- .idea/workspace.xml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - name: Checkout Data Repo | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| repository: megamek/mm-data | ||
| path: mm-data | ||
|
|
||
| - name: "Check out MegaMek" | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| path: megamek | ||
|
|
||
| - name: Set short git commit SHA | ||
| id: vars | ||
| run: | | ||
| cd megamek | ||
| calculatedSha=$(git rev-parse --short ${{ github.sha }}) | ||
| echo "COMMIT_SHORT_SHA=$calculatedSha" >> $GITHUB_ENV | ||
|
|
||
| - name: "Output branch information to Version file" | ||
| run: | | ||
| echo "branch=PR-${{ github.event.number }}" >> megamek/megamek/resources/extraVersion.properties | ||
| echo "gitHash=${{ env.COMMIT_SHORT_SHA }}" >> megamek/megamek/resources/extraVersion.properties | ||
|
|
||
| - name: Set up ${{ matrix.java-distribution }} JDK ${{ matrix.java-version }} | ||
| uses: actions/setup-java@v5 | ||
| with: | ||
| distribution: ${{ matrix.java-distribution }} | ||
| java-version: ${{ matrix.java-version }} | ||
|
|
||
| - name: Setup Gradle | ||
| uses: gradle/actions/setup-gradle@v6 | ||
|
|
||
| - name: Test | ||
| working-directory: megamek | ||
| run: ./gradlew test -x checkstyleMain -x checkstyleTest |
| - name: Set up JDK 21 | ||
| uses: actions/setup-java@v5 | ||
| with: | ||
| distribution: temurin | ||
| java-version: 21 | ||
|
|
||
| - name: Setup Gradle | ||
| uses: gradle/actions/setup-gradle@v6 | ||
| with: | ||
| build-scan-publish: true | ||
| build-scan-terms-of-use-url: "https://gradle.com/terms-of-service" | ||
| build-scan-terms-of-use-agree: "yes" | ||
|
|
||
| - name: Build with Gradle | ||
| working-directory: megamek | ||
| run: | | ||
| if [ -n "${{ inputs.pr_number }}" ]; then | ||
| ./gradlew build -x test -PextraVersion="QA-PR-${{ inputs.pr_number }}-${{ env.COMMIT_SHORT_SHA }}" | ||
| else | ||
| ./gradlew build -x test -PextraVersion="QA-Build-${{ env.COMMIT_SHORT_SHA }}" | ||
| fi | ||
|
|
||
| - name: Upload TarGZ Release | ||
| uses: actions/upload-artifact@v7 | ||
| with: | ||
| name: mm-qa-test-build | ||
| path: ./megamek/megamek/build/distributions/*.tar.gz | ||
| retention-days: 30 | ||
|
|
||
| - name: Generate Build Summary | ||
| run: | | ||
| echo "# QA Test Build Summary" >> $GITHUB_STEP_SUMMARY | ||
| echo "" >> $GITHUB_STEP_SUMMARY | ||
| echo "## Build Information" >> $GITHUB_STEP_SUMMARY | ||
| echo "- **Build Description:** ${{ inputs.build_description }}" >> $GITHUB_STEP_SUMMARY | ||
| if [ -n "${{ inputs.pr_number }}" ]; then | ||
| echo "- **PR Number:** #${{ inputs.pr_number }}" >> $GITHUB_STEP_SUMMARY | ||
| fi | ||
| echo "- **Commit:** ${{ env.COMMIT_SHORT_SHA }}" >> $GITHUB_STEP_SUMMARY | ||
| echo "- **Branch:** ${{ github.ref_name }}" >> $GITHUB_STEP_SUMMARY | ||
| echo "- **Java Version:** 17" >> $GITHUB_STEP_SUMMARY | ||
| echo "- **Build Date:** $(date +'%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY |
| include "Common" | ||
| include "HPGNet" | ||
| include "MekWarsAdmin" | ||
| include "MekWarsAutoUpdate" | ||
| include "MekWarsClient" | ||
| include "MekWarsDedicated" | ||
| include "MekWarsOpEditor" | ||
| include "MekWarsServer" | ||
| include "MekWarsTracker" | ||
| include "PlanetDataConverter" |
| - name: Checkout Data Repo | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| repository: megamek/mm-data | ||
| path: mm-data | ||
|
|
||
| - uses: actions/checkout@v6 | ||
| with: | ||
| path: megamek | ||
|
|
||
| - name: Set short git commit SHA | ||
| id: vars | ||
| run: | | ||
| cd megamek | ||
| calculatedSha=$(git rev-parse --short ${{ github.sha }}) | ||
| echo "COMMIT_SHORT_SHA=$calculatedSha" >> $GITHUB_ENV | ||
|
|
||
| - name: "Output branch information to Version file" | ||
| run: | | ||
| if [ -n "${{ inputs.pr_number }}" ]; then | ||
| echo "branch=QA-PR-${{ inputs.pr_number }}" >> megamek/megamek/resources/extraVersion.properties | ||
| else | ||
| echo "branch=QA-Build" >> megamek/megamek/resources/extraVersion.properties | ||
| fi | ||
| echo "gitHash=${{ env.COMMIT_SHORT_SHA }}" >> megamek/megamek/resources/extraVersion.properties | ||
|
|
||
| - name: Set up JDK 21 | ||
| uses: actions/setup-java@v5 | ||
| with: | ||
| distribution: temurin | ||
| java-version: 21 | ||
|
|
||
| - name: Setup Gradle | ||
| uses: gradle/actions/setup-gradle@v6 | ||
| with: | ||
| build-scan-publish: true | ||
| build-scan-terms-of-use-url: "https://gradle.com/terms-of-service" | ||
| build-scan-terms-of-use-agree: "yes" | ||
|
|
||
| - name: Build with Gradle | ||
| working-directory: megamek | ||
| run: | | ||
| if [ -n "${{ inputs.pr_number }}" ]; then | ||
| ./gradlew build -x test -PextraVersion="QA-PR-${{ inputs.pr_number }}-${{ env.COMMIT_SHORT_SHA }}" | ||
| else | ||
| ./gradlew build -x test -PextraVersion="QA-Build-${{ env.COMMIT_SHORT_SHA }}" | ||
| fi |
Initial work on updating Common to compile
| Gson gson = builder.create(); | ||
|
|
||
| try { | ||
| FileWriter file = new FileWriter(filename); |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Upgrades the codebase/build to Java 21 (and Gradle-based builds) while adding GitHub Actions automation, alongside a large “Common” package migration toward mekwars.* namespaces and reintroducing/porting several legacy classes.
Changes:
- Added multiple GitHub Actions workflows for CI, CodeQL, coverage, docs, dependency submission, and QA builds.
- Introduced Gradle build scripts for subprojects (e.g.,
Common,HPGNet) and moved a large set of classes intomekwars.*packages. - Removed legacy/IDE-specific and some older UI/admin/editor Java sources (plus old
.vscode, Ant batch script, and misc metadata files).
Reviewed changes
Copilot reviewed 117 out of 1710 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
| MekWars/src/mekwars/admin/dialog/CommandNameDialog.java | Removed legacy admin dialog implementation |
| MekWars/src/mekwars/admin/dialog/BannedTargetingDialog.java | Removed legacy admin dialog implementation |
| MekWars/src/mekwars/admin/dialog/BannedAmmoDialog.java | Removed legacy admin dialog implementation |
| MekWars/src/mekwars/admin/AdminMapPopupMenu.java | Removed legacy admin menu UI |
| MekWars/src/mekwars/OperationsEditor/dialog/TextEditorDialog.java | Removed legacy operations editor dialog |
| MekWars/src/mekwars/OperationsEditor/dialog/FlagTable.java | Removed legacy operations editor table |
| MekWars/src/mekwars/OperationsEditor/MainOperations.java | Removed legacy standalone entry point |
| MekWars/src/.vscode/settings.json | Removed project-local VS Code settings |
| MekWars/src/.vscode/launch.json | Removed project-local VS Code launch configs |
| MekWars/history.txt | Removed legacy history file |
| MekWars/build.bat | Removed legacy Ant build script |
| MekWars/.gitignore | Removed nested .gitignore |
| MekWars/.gitattributes | Removed nested .gitattributes |
| HPGNet/src/mekwars/hpgnet/HPGSubscriberDeserializer.java | Added Gson deserializer for tracker subscriber model |
| HPGNet/src/mekwars/hpgnet/HPGPurgeThread.java | Added thread to purge expired tracker entries |
| HPGNet/src/mekwars/hpgnet/HPGProcessingThread.java | Added thread to process inbound tracker messages |
| HPGNet/src/mekwars/hpgnet/HPGListenerThread.java | Added listener thread for tracker server socket |
| HPGNet/build.gradle | Added Gradle build for HPGNet module |
| Common/src/mekwars/common/util/unitdamage/VehicleDamageHandler.java | Updated to new MegaMek APIs and mekwars.* packages |
| Common/src/mekwars/common/util/unitdamage/UnitDamageHandlerFactory.java | Added handler factory for unit damage serialization |
| Common/src/mekwars/common/util/unitdamage/ProtoDamageHandler.java | Added placeholder handler for ProtoMeks |
| Common/src/mekwars/common/util/unitdamage/MekDamageHandler.java | Updated to new MegaMek APIs and location constants |
| Common/src/mekwars/common/util/unitdamage/InfantryDamageHandler.java | Added placeholder handler for Infantry |
| Common/src/mekwars/common/util/unitdamage/GenericDamageHandler.java | Added generic fallback damage handler |
| Common/src/mekwars/common/util/unitdamage/BattleArmorDamageHandler.java | Added placeholder handler for BattleArmor |
| Common/src/mekwars/common/util/unitdamage/AeroDamageHandler.java | Added placeholder handler for Aeros |
| Common/src/mekwars/common/util/unitdamage/AbstractUnitDamageHandler.java | Added common interface for damage handlers |
| Common/src/mekwars/common/util/UnitComponents.java | Migrated package; adjusted references |
| Common/src/mekwars/common/util/TokenReader.java | Migrated package |
| Common/src/mekwars/common/util/ThreadManager.java | Migrated package |
| Common/src/mekwars/common/util/TeePrinter.java | Migrated package |
| Common/src/mekwars/common/util/StringUtils.java | Migrated package |
| Common/src/mekwars/common/util/SpringLayoutHelper.java | Migrated package |
| Common/src/mekwars/common/util/Position.java | Migrated package |
| Common/src/mekwars/common/util/MekwarsFileReader.java | Migrated package |
| Common/src/mekwars/common/util/MWLogger.java | Migrated package |
| Common/src/mekwars/common/util/MMNetXStream.java | Migrated package |
| Common/src/mekwars/common/util/ComponentToCritsConverter.java | Migrated package |
| Common/src/mekwars/common/util/BinWriter.java | Added alternate BinWriter implementation under mekwars.common.util |
| Common/src/mekwars/common/util/BinReader.java | Added alternate BinReader implementation under mekwars.common.util |
| Common/src/mekwars/common/persistence/BinWriter.java | Added minimal persistence BinWriter |
| Common/src/mekwars/common/persistence/BinReader.java | Added minimal persistence BinReader |
| Common/src/mekwars/common/interfaces/IServer.java | Added server interface abstraction |
| Common/src/mekwars/common/interfaces/IClient.java | Added client interface abstraction |
| Common/src/mekwars/common/flags/ResultsFlags.java | Added ResultsFlags implementation |
| Common/src/mekwars/common/flags/PlayerFlags.java | Added PlayerFlags implementation |
| Common/src/mekwars/common/flags/FlagSet.java | Added shared FlagSet base |
| Common/src/mekwars/common/comm/ServerCommand.java | Added server command interface |
| Common/src/mekwars/common/comm/ICommand.java | Migrated package and modernized interface method signatures |
| Common/src/mekwars/common/comm/Command.java | Added base command implementation |
| Common/src/mekwars/common/comm/ClientCommand.java | Added client command interface |
| Common/src/mekwars/common/campaign/targetsystems/TargetTypeOutOfBoundsException.java | Added exception type |
| Common/src/mekwars/common/campaign/targetsystems/TargetTypeNotImplementedException.java | Added exception type |
| Common/src/mekwars/common/campaign/targetsystems/TargetSystem.java | Added targeting system logic in mekwars.* |
| Common/src/mekwars/common/campaign/pilot/skills/PilotSkills.java | Added pilot skills container |
| Common/src/mekwars/common/campaign/pilot/skills/PilotSkill.java | Added pilot skill model |
| Common/src/mekwars/common/campaign/pilot/skills/IPilotSkill.java | Migrated package and modernized interface method signatures |
| Common/src/mekwars/common/campaign/operations/Operation.java | Added Operation definition |
| Common/src/mekwars/common/campaign/operations/ModifyingOperation.java | Added ModifyingOperation definition |
| Common/src/mekwars/common/campaign/operations/DefaultOperation.java | Migrated package and modernized generics |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/PongPCmd.java | Added protocol command |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/PingPCmd.java | Added protocol command |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/IProtCommand.java | Added protocol command interface |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/CommPCmd.java | Added protocol command |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/CProtCommand.java | Added protocol base command |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/AckSignOnPCmd.java | Added protocol command |
| Common/src/mekwars/common/campaign/clientutils/protocol/WriterThread.java | Added socket writer thread |
| Common/src/mekwars/common/campaign/clientutils/protocol/ReaderThread.java | Added socket reader thread |
| Common/src/mekwars/common/campaign/clientutils/protocol/IConnectionListener.java | Added connection listener interface |
| Common/src/mekwars/common/campaign/clientutils/protocol/IConnectionHandler.java | Added connection handler interface |
| Common/src/mekwars/common/campaign/clientutils/protocol/IClient.java | Added protocol client interface |
| Common/src/mekwars/common/campaign/clientutils/protocol/ConnectionHandlerLocal.java | Added local connection handler implementation |
| Common/src/mekwars/common/campaign/clientutils/protocol/CConnector.java | Added connector implementation |
| Common/src/mekwars/common/campaign/clientutils/SerializeEntity.java | Added entity serialization helper |
| Common/src/mekwars/common/campaign/clientutils/IGameHost.java | Added game host interface |
| Common/src/mekwars/common/campaign/clientutils/IClientUser.java | Added client user interface |
| Common/src/mekwars/common/campaign/clientutils/IClientConfig.java | Migrated package |
| Common/src/mekwars/common/campaign/Buildings.java | Added Buildings template/config model |
| Common/src/mekwars/common/VerticalLayout.java | Added layout manager |
| Common/src/mekwars/common/TerrainProvider.java | Migrated package |
| Common/src/mekwars/common/Terrain.java | Migrated package; formatting improvements |
| Common/src/mekwars/common/SubFaction.java | Added SubFaction model |
| Common/src/mekwars/common/Player.java | Added Player model |
| Common/src/mekwars/common/PlanetEnvironments.java | Added planet environment collection |
| Common/src/mekwars/common/MutableSerializable.java | Added mutable serialization contract |
| Common/src/mekwars/common/MegaMekPilotOption.java | Added pilot option container |
| Common/src/mekwars/common/MWXmlSerializable.java | Migrated package |
| Common/src/mekwars/common/MWXMLWriter.java | Added XML writer helper |
| Common/src/mekwars/common/MMGame.java | Added game descriptor/DTO |
| Common/src/mekwars/common/GameWrapper.java | Added wrapper around MegaMek Game |
| Common/src/mekwars/common/GameInterface.java | Added abstraction for game access |
| Common/src/mekwars/common/Equipment.java | Added Equipment model |
| Common/src/mekwars/common/Continent.java | Added continent model |
| Common/src/mekwars/common/BMEquipment.java | Migrated package and formatting improvements |
| Common/src/mekwars/common/Army.java | Migrated package and adjusted Unit references |
| Common/settings.gradle | Added module name for Gradle settings |
| Common/build.gradle | Added Gradle build for Common module |
| .vscode/settings.json | Removed repo-level VS Code settings |
| .vscode/launch.json | Removed repo-level VS Code launch configs |
| .gradle/buildOutputCleanup/cache.properties | Removed Gradle cache artifact from VCS |
| .github/workflows/qa-test-build.yml | Added manual QA build workflow |
| .github/workflows/nightly-ci.yml | Added scheduled nightly CI |
| .github/workflows/java-doc.yml | Added GitHub Pages JavaDoc publishing |
| .github/workflows/java-doc-on-pr.yml | Added PR JavaDoc build |
| .github/workflows/dependency-scan.yml | Added Gradle dependency submission workflow |
| .github/workflows/codeql-analysis.yml | Added CodeQL analysis workflow |
| .github/workflows/code-coverage.yml | Added CodeCov/Jacoco workflow |
| .github/workflows/ci.yml | Added PR CI workflow |
| .github/workflows/checkstyle.yml | Added Checkstyle workflow |
| .github/dependabot.yml | Added Dependabot config for GitHub Actions |
| .github/codecov.yml | Added CodeCov configuration |
| .github/ISSUE_TEMPLATE/request_for_enhancement.yml | Added enhancement request template |
| .github/ISSUE_TEMPLATE/config.yml | Added issue template configuration |
| .github/ISSUE_TEMPLATE/bug_report.yml | Added bug report template |
Files not reviewed (8)
- .idea/.name: Language not supported
- .idea/compiler.xml: Language not supported
- .idea/gradle.xml: Language not supported
- .idea/inspectionProfiles/Project_Default.xml: Language not supported
- .idea/jarRepositories.xml: Language not supported
- .idea/misc.xml: Language not supported
- .idea/vcs.xml: Language not supported
- .idea/workspace.xml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| public boolean equals(Object o) { | ||
| if (!(o instanceof Continent cont)) { | ||
| return false; | ||
| } | ||
|
|
||
| if (cont.getSize() != getSize()) { | ||
| return false; | ||
| } |
| protected int getFlagKey(String name) { | ||
| if (flagNames.isEmpty()) { | ||
| return -1; | ||
| } | ||
| for (int i = 0; i < flagNames.size(); i++) { | ||
| if (flagNames.get(i).equalsIgnoreCase(name)) { | ||
| return i; | ||
| } | ||
| } | ||
| return -1; | ||
| } |
| * Pause the thread for 10 minutes initially - this is the default period between | ||
| * updates from servers and will allow for servers to get reconnected just in case | ||
| */ | ||
| this.extendedWait(600000); | ||
|
|
||
| if (tracker.isBusy()) { | ||
| this.extendedWait(90000); | ||
| } | ||
|
|
||
| /* | ||
| * Begin blocking | ||
| */ | ||
| tracker.getPurgingThreads().add(this); | ||
|
|
||
| Vector<HPGSubscriber> toDelete = new Vector<>(); | ||
|
|
||
| for (HPGSubscriber sub : tracker.getSubscribers()) { | ||
| sub.calculateThreatLevel(); | ||
| if (sub.getThreatLevel() == HPGSubscriber.THREAT_LEVEL_PURGE) { | ||
| toDelete.add(sub); | ||
| } | ||
| } | ||
|
|
||
| if (!toDelete.isEmpty()) { | ||
| for (HPGSubscriber sub : toDelete) { | ||
| tracker.delete(sub); | ||
| } | ||
| } | ||
|
|
||
| /* | ||
| * Unblock and sleep for 12 hours | ||
| */ | ||
| tracker.getPurgingThreads().remove(this); | ||
|
|
||
| int hours = Integer.parseInt(tracker.getConfig().getProperty("purgefrequency", "12")); | ||
| int waitTime = hours * 60 * 60 * 1000; | ||
| extendedWait(waitTime); | ||
| } | ||
| } |
| try { | ||
| server.close(); | ||
| } catch (IOException e) { | ||
| MWLogger.errLog(e); |
| final JsonArray historicalPlayersArray = obj.get("historicalPlayers").getAsJsonArray(); | ||
| final JsonArray historicalGamesArray = obj.get("historicalGames").getAsJsonArray(); |
| ./gradlew build -x test -PextraVersion="QA-PR-${{ inputs.pr_number }}-${{ env.COMMIT_SHORT_SHA }}" | ||
| else | ||
| ./gradlew build -x test -PextraVersion="QA-Build-${{ env.COMMIT_SHORT_SHA }}" |
| fi | ||
| echo "- **Commit:** ${{ env.COMMIT_SHORT_SHA }}" >> $GITHUB_STEP_SUMMARY | ||
| echo "- **Branch:** ${{ github.ref_name }}" >> $GITHUB_STEP_SUMMARY | ||
| echo "- **Java Version:** 17" >> $GITHUB_STEP_SUMMARY |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Upgrades the build to Java 21 and introduces Gradle-based subprojects, while also adding GitHub Actions workflows and migrating/adding a large set of Common/HPGNet sources to the mekwars.* package structure.
Changes:
- Add Gradle build scripts for
CommonandHPGNettargeting Java 21 toolchains. - Add GitHub Actions workflows for CI, coverage, CodeQL, docs, dependency submission, and QA builds.
- Migrate and introduce many Java sources under
mekwars.*, including protocol/serialization helpers and damage-handling abstractions.
Reviewed changes
Copilot reviewed 94 out of 1789 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| HPGNet/src/mekwars/hpgnet/HPGPurgeThread.java | Adds purge thread implementation for tracker subscriber cleanup |
| HPGNet/src/mekwars/hpgnet/HPGProcessingThread.java | Adds processing thread for inbound tracker messages |
| HPGNet/src/mekwars/hpgnet/HPGListenerThread.java | Adds listener thread accepting tracker socket connections |
| HPGNet/settings.gradle | Defines HPGNet Gradle project name |
| HPGNet/build.gradle | Adds Java 21 toolchain + dependencies for HPGNet |
| Common/src/mekwars/common/util/unitdamage/VehicleDamageHandler.java | Updates MegaMek API usages + package rename |
| Common/src/mekwars/common/util/unitdamage/UnitDamageHandlerFactory.java | Adds factory to select unit damage handler by entity type |
| Common/src/mekwars/common/util/unitdamage/ProtoDamageHandler.java | Adds placeholder ProtoMek damage handler |
| Common/src/mekwars/common/util/unitdamage/MekDamageHandler.java | Updates MegaMek API usages + package rename |
| Common/src/mekwars/common/util/unitdamage/InfantryDamageHandler.java | Adds placeholder Infantry damage handler |
| Common/src/mekwars/common/util/unitdamage/GenericDamageHandler.java | Adds generic placeholder damage handler |
| Common/src/mekwars/common/util/unitdamage/BattleArmorDamageHandler.java | Adds placeholder BattleArmor damage handler |
| Common/src/mekwars/common/util/unitdamage/AeroDamageHandler.java | Adds placeholder Aero damage handler |
| Common/src/mekwars/common/util/unitdamage/AbstractUnitDamageHandler.java | Adds base abstraction for unit damage handlers |
| Common/src/mekwars/common/util/TokenReader.java | Updates package to mekwars.common.util |
| Common/src/mekwars/common/util/ThreadManager.java | Adds executor-backed thread manager |
| Common/src/mekwars/common/util/TeePrinter.java | Updates package + adds @Nonnull annotation |
| Common/src/mekwars/common/util/StringUtils.java | Adds string/color utility functions |
| Common/src/mekwars/common/util/SpringLayoutHelper.java | Updates package to mekwars.common.util |
| Common/src/mekwars/common/util/Position.java | Adds Position helper class |
| Common/src/mekwars/common/util/MekWarsFileReader.java | Adds file reader wrapper utility |
| Common/src/mekwars/common/util/MWLogger.java | Adds Log4j2-backed logger facade |
| Common/src/mekwars/common/util/MMNetXStream.java | Updates package + imports for XML serialization |
| Common/src/mekwars/common/util/ComponentToCritsConverter.java | Adds component-to-crits converter helper |
| Common/src/mekwars/common/persistence/BinWriter.java | Adds binary writer helper |
| Common/src/mekwars/common/persistence/BinReader.java | Adds binary reader helper |
| Common/src/mekwars/common/interfaces/IServer.java | Adds server interface used by commands |
| Common/src/mekwars/common/gui/SplashWindow.java | Adds splash screen window |
| Common/src/mekwars/common/gui/AnimationThread.java | Adds splash animation thread |
| Common/src/mekwars/common/gui/ActivationThread.java | Adds button activation/flash thread |
| Common/src/mekwars/common/flags/ResultsFlags.java | Adds results flag set with applicability metadata |
| Common/src/mekwars/common/flags/PlayerFlags.java | Adds player flag set wrapper |
| Common/src/mekwars/common/flags/FlagSet.java | Adds base flag/serialization logic |
| Common/src/mekwars/common/comm/TransportCodec.java | Adds URL-safe encoding + object transport codec |
| Common/src/mekwars/common/comm/ServerCommand.java | Adds server command interface |
| Common/src/mekwars/common/comm/ICommand.java | Updates package + modernizes interface declarations |
| Common/src/mekwars/common/comm/Command.java | Adds base command implementation |
| Common/src/mekwars/common/comm/ClientCommand.java | Adds client command interface |
| Common/src/mekwars/common/campaign/targetsystems/TargetTypeOutOfBoundsException.java | Adds target-system exception class |
| Common/src/mekwars/common/campaign/targetsystems/TargetTypeNotImplementedException.java | Adds target-system exception class |
| Common/src/mekwars/common/campaign/targetsystems/TargetSystem.java | Adds quirk-based target system toggling logic |
| Common/src/mekwars/common/campaign/pilot/skills/PilotSkills.java | Adds pilot skill container implementation |
| Common/src/mekwars/common/campaign/pilot/skills/PilotSkill.java | Adds pilot skill model |
| Common/src/mekwars/common/campaign/pilot/skills/IPilotSkill.java | Updates package + modernizes interface declarations |
| Common/src/mekwars/common/campaign/pilot/Pilot.java | Adds pilot model and skill-string utilities |
| Common/src/mekwars/common/campaign/operations/Operation.java | Adds operation config model + XML serialization |
| Common/src/mekwars/common/campaign/operations/ModifyingOperation.java | Adds operation modifier model |
| Common/src/mekwars/common/campaign/operations/DefaultOperation.java | Updates package + generics modernization |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/PongPCmd.java | Adds pong protocol command |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/PingPCmd.java | Adds ping protocol command |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/IProtCommand.java | Adds protocol command interface |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/CommPCmd.java | Adds comm protocol command |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/CProtCommand.java | Adds protocol command base class |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/AckSignOnPCmd.java | Adds sign-on ack command logic |
| Common/src/mekwars/common/campaign/clientutils/protocol/WriterThread.java | Adds socket writer thread |
| Common/src/mekwars/common/campaign/clientutils/protocol/ReaderThread.java | Adds socket reader thread + inflate handling |
| Common/src/mekwars/common/campaign/clientutils/protocol/IConnectionListener.java | Adds connection listener interface |
| Common/src/mekwars/common/campaign/clientutils/protocol/IConnectionHandler.java | Adds connection handler interface |
| Common/src/mekwars/common/campaign/clientutils/protocol/IClient.java | Adds protocol client interface |
| Common/src/mekwars/common/campaign/clientutils/protocol/ConnectionHandlerLocal.java | Adds client-side connection handler |
| Common/src/mekwars/common/campaign/clientutils/protocol/CConnector.java | Adds connector implementing connection listener |
| Common/src/mekwars/common/campaign/clientutils/SerializeEntity.java | Adds entity serialization helper |
| Common/src/mekwars/common/campaign/clientutils/IPlayer.java | Adds minimal player interface |
| Common/src/mekwars/common/campaign/clientutils/IGameHost.java | Adds host interface used by MM events |
| Common/src/mekwars/common/campaign/clientutils/IClientUser.java | Adds minimal client user interface |
| Common/src/mekwars/common/campaign/clientutils/IClientConfig.java | Updates package to mekwars.* |
| Common/src/mekwars/common/campaign/Buildings.java | Adds building template model |
| Common/src/mekwars/common/VerticalLayout.java | Adds a vertical Swing layout manager |
| Common/src/mekwars/common/TerrainProvider.java | Adds terrain provider interface |
| Common/src/mekwars/common/Terrain.java | Updates package + persistence imports + minor refactors |
| Common/src/mekwars/common/SubFaction.java | Adds sub-faction config model |
| Common/src/mekwars/common/Player.java | Adds player model w/ flags support (incomplete name impl) |
| Common/src/mekwars/common/PlanetEnvironments.java | Adds environment collection model + bin IO |
| Common/src/mekwars/common/MutableSerializable.java | Adds mutable-field serialization interface |
| Common/src/mekwars/common/MegaMekPilotOption.java | Adds pilot option container |
| Common/src/mekwars/common/MWXmlSerializable.java | Updates package + modernizes interface declarations |
| Common/src/mekwars/common/MWXMLWriter.java | Adds XML writer helper |
| Common/src/mekwars/common/MMGame.java | Adds game metadata model |
| Common/src/mekwars/common/GameWrapper.java | Adds Game adapter exposing simplified interface |
| Common/src/mekwars/common/GameInterface.java | Adds game interface abstraction |
| Common/src/mekwars/common/Equipment.java | Adds equipment model |
| Common/src/mekwars/common/Continent.java | Adds continent/environment wrapper (equals implementation added) |
| Common/src/mekwars/common/BMEquipment.java | Updates package + MegaMek equipment API usage |
| Common/src/mekwars/common/Army.java | Updates package + small refactors/fixes |
| Common/settings.gradle | Defines Common Gradle project name |
| Common/build.gradle | Adds Java 21 toolchain + dependencies for Common |
| .vscode/settings.json | Removes VS Code Java project settings |
| .vscode/launch.json | Removes VS Code launch configurations |
| .gradle/buildOutputCleanup/cache.properties | Removes Gradle cache metadata from repo |
| .github/workflows/qa-test-build.yml | Adds manual QA build workflow |
| .github/workflows/nightly-ci.yml | Adds nightly test/build workflow |
| .github/workflows/java-doc.yml | Adds JavaDoc publish workflow |
| .github/workflows/java-doc-on-pr.yml | Adds JavaDoc build on PR workflow |
| .github/workflows/dependency-scan.yml | Adds dependency submission workflow |
| .github/workflows/codeql-analysis.yml | Adds CodeQL workflow |
| .github/workflows/code-coverage.yml | Adds CI workflow with code coverage upload |
| .github/workflows/ci.yml | Adds PR CI workflow |
| .github/workflows/checkstyle.yml | Adds Checkstyle workflow |
| .github/dependabot.yml | Adds Dependabot configuration for GitHub Actions |
| .github/codecov.yml | Adds Codecov configuration |
| .github/ISSUE_TEMPLATE/request_for_enhancement.yml | Adds RFE issue template |
| .github/ISSUE_TEMPLATE/config.yml | Adds issue template config/contact links |
| .github/ISSUE_TEMPLATE/bug_report.yml | Adds bug report issue template |
Files not reviewed (8)
- .idea/.name: Language not supported
- .idea/compiler.xml: Language not supported
- .idea/gradle.xml: Language not supported
- .idea/inspectionProfiles/Project_Default.xml: Language not supported
- .idea/jarRepositories.xml: Language not supported
- .idea/misc.xml: Language not supported
- .idea/vcs.xml: Language not supported
- .idea/workspace.xml: Language not supported
Comments suppressed due to low confidence (1)
Common/src/mekwars/common/comm/TransportCodec.java:1
- This is not charset-safe for arbitrary serialized bytes:
baos.toString()andsobj.getBytes()both use the platform default charset, which can corrupt data and break decoding across machines/locales. Use a deterministic binary-to-text encoding (e.g., Base64) or at least a single-byte charset (ISO-8859-1) for reversible byte<->String mapping.
/*
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| try { | ||
| server.close(); | ||
| } catch (IOException e) { | ||
| MWLogger.errLog(e); |
| if (tracker.isBusy()) { | ||
| this.extendedWait(90000); | ||
| } | ||
|
|
||
| /* | ||
| * Begin blocking | ||
| */ | ||
| tracker.getPurgingThreads().add(this); | ||
|
|
||
| Vector<HPGSubscriber> toDelete = new Vector<>(); | ||
|
|
||
| for (HPGSubscriber sub : tracker.getSubscribers()) { | ||
| sub.calculateThreatLevel(); | ||
| if (sub.getThreatLevel() == HPGSubscriber.THREAT_LEVEL_PURGE) { | ||
| toDelete.add(sub); | ||
| } | ||
| } | ||
|
|
||
| if (!toDelete.isEmpty()) { | ||
| for (HPGSubscriber sub : toDelete) { | ||
| tracker.delete(sub); | ||
| } | ||
| } | ||
|
|
||
| /* | ||
| * Unblock and sleep for 12 hours | ||
| */ | ||
| tracker.getPurgingThreads().remove(this); | ||
|
|
||
| int hours = Integer.parseInt(tracker.getConfig().getProperty("purgefrequency", "12")); | ||
| int waitTime = hours * 60 * 60 * 1000; | ||
| extendedWait(waitTime); |
| @Override | ||
| public String getName() { | ||
| return ""; | ||
| } |
| @Override | ||
| public boolean equals(Object o) { | ||
| if (!(o instanceof Continent cont)) { | ||
| return false; | ||
| } | ||
|
|
||
| if (cont.getSize() != getSize()) { | ||
| return false; | ||
| } | ||
|
|
||
| if (cont.getEnvironment().equals(getEnvironment())) { | ||
| return false; | ||
| } | ||
|
|
||
| return !cont.getAdvancedTerrain().equals(getAdvancedTerrain()); | ||
| } |
| protected int getFlagKey(String name) { | ||
| if (flagNames.isEmpty()) { | ||
| return -1; | ||
| } | ||
| for (int i = 0; i < flagNames.size(); i++) { | ||
| if (flagNames.get(i).equalsIgnoreCase(name)) { | ||
| return i; | ||
| } | ||
| } | ||
| return -1; | ||
| } |
| echo "- **Commit:** ${{ env.COMMIT_SHORT_SHA }}" >> $GITHUB_STEP_SUMMARY | ||
| echo "- **Branch:** ${{ github.ref_name }}" >> $GITHUB_STEP_SUMMARY | ||
| echo "- **Java Version:** 17" >> $GITHUB_STEP_SUMMARY |
| package mekwars.common.campaign.targetsystems; | ||
|
|
||
| public class TargetTypeOutOfBoundsException extends Exception { | ||
| public TargetTypeOutOfBoundsException(int type) { |
| public double distanceSq(double xpos, double ypos) { | ||
| return Math.sqrt(Math.pow(x - xpos, 2) + Math.pow(y - ypos, 2)); | ||
| } | ||
|
|
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR modernizes the build/CI setup for Java 21 (+ preview features) and Gradle, while also restructuring/adding a large set of “Common” sources under the mekwars.common.* package and introducing GitHub Actions workflows for CI, QA builds, CodeQL, docs, and dependency scanning.
Changes:
- Add/port a substantial set of
Common/srcJava sources into themekwars.common.*namespace (campaign, comms, flags, utilities). - Add Gradle build configuration for the
Commonmodule (Java 21 toolchain + preview compilation). - Add multiple GitHub Actions workflows (CI, nightly, CodeQL, coverage, docs, dependency submission) and issue templates; remove editor/Gradle cache files.
Reviewed changes
Copilot reviewed 94 out of 1799 changed files in this pull request and generated 17 comments.
Show a summary per file
| File | Description |
|---|---|
| Common/src/mekwars/common/gui/AnimationThread.java | Adds splash animation thread for UI startup feedback. |
| Common/src/mekwars/common/gui/ActivationThread.java | Adds UI “activity” button flashing thread. |
| Common/src/mekwars/common/flags/ResultsFlags.java | Adds results-related flag set with export/import + applicability. |
| Common/src/mekwars/common/flags/PlayerFlags.java | Adds persistent player flag set wrapper around FlagSet. |
| Common/src/mekwars/common/flags/FlagSet.java | Adds core flag storage, (de)serialization, and disk persistence. |
| Common/src/mekwars/common/comm/TransportCodec.java | Adds transport encoding/decoding utilities (URL-escape + object serialization). |
| Common/src/mekwars/common/comm/ServerCommand.java | Adds server command interface. |
| Common/src/mekwars/common/comm/ICommand.java | Moves command interface to mekwars.common.comm and modernizes signatures. |
| Common/src/mekwars/common/comm/Command.java | Adds base command implementation + registry table. |
| Common/src/mekwars/common/comm/ClientCommand.java | Adds client command interface. |
| Common/src/mekwars/common/campaign/targetsystems/TargetTypeOutOfBoundsException.java | Adds target-system exception type. |
| Common/src/mekwars/common/campaign/targetsystems/TargetTypeNotImplementedException.java | Adds target-system exception type for unimplemented types. |
| Common/src/mekwars/common/campaign/targetsystems/TargetSystem.java | Adds target-system selection logic and name helpers. |
| Common/src/mekwars/common/campaign/pilot/skills/PilotSkills.java | Adds pilot skill container logic. |
| Common/src/mekwars/common/campaign/pilot/skills/PilotSkill.java | Adds pilot-skill metadata and MegaMek skill ID mapping. |
| Common/src/mekwars/common/campaign/pilot/skills/IPilotSkill.java | Moves pilot-skill interface into mekwars.common.*. |
| Common/src/mekwars/common/campaign/pilot/Pilot.java | Adds pilot model with skills and formatting helpers. |
| Common/src/mekwars/common/campaign/operations/Operation.java | Adds operation definition + XML writer integration. |
| Common/src/mekwars/common/campaign/operations/ModifyingOperation.java | Adds operation modifier container. |
| Common/src/mekwars/common/campaign/operations/DefaultOperation.java | Moves defaults into mekwars.common.* and tweaks generics usage. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/PongPCmd.java | Adds protocol “pong” command handling. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/PingPCmd.java | Adds protocol “ping” command handling. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/IProtCommand.java | Adds protocol command interface. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/CommPCmd.java | Adds protocol “comm” command handling. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/CProtCommand.java | Adds protocol command base class. |
| Common/src/mekwars/common/campaign/clientutils/protocol/commands/AckSignOnPCmd.java | Adds sign-on acknowledgement command handling. |
| Common/src/mekwars/common/campaign/clientutils/protocol/WriterThread.java | Adds outbound socket writer thread. |
| Common/src/mekwars/common/campaign/clientutils/protocol/TransportCodec.java | Adds protocol-layer transport codec (duplicate of comm codec). |
| Common/src/mekwars/common/campaign/clientutils/protocol/ReaderThread.java | Adds inbound socket reader with optional inflate support. |
| Common/src/mekwars/common/campaign/clientutils/protocol/IConnectionListener.java | Adds socket message listener interface. |
| Common/src/mekwars/common/campaign/clientutils/protocol/IConnectionHandler.java | Adds connection handler interface. |
| Common/src/mekwars/common/campaign/clientutils/protocol/IClient.java | Adds protocol client interface + constants. |
| Common/src/mekwars/common/campaign/clientutils/protocol/ConnectionHandlerLocal.java | Adds socket owner (spawns reader/writer threads). |
| Common/src/mekwars/common/campaign/clientutils/protocol/CConnector.java | Adds connector for client-side networking. |
| Common/src/mekwars/common/campaign/clientutils/SerializeEntity.java | Adds entity serialization (uses Java 21 preview switch patterns). |
| Common/src/mekwars/common/campaign/clientutils/IPlayer.java | Adds minimal player interface. |
| Common/src/mekwars/common/campaign/clientutils/IGameHost.java | Adds host interface for client game hosting. |
| Common/src/mekwars/common/campaign/clientutils/IClientUser.java | Adds minimal client user interface. |
| Common/src/mekwars/common/campaign/clientutils/IClientConfig.java | Adds client config interface. |
| Common/src/mekwars/common/campaign/clientutils/GameHost.java | Adds common MegaMek game listener bridge for hosting. |
| Common/src/mekwars/common/campaign/CUser.java | Adds client user model (campaign/user list). |
| Common/src/mekwars/common/campaign/CPersonalPilotQueues.java | Adds client-side pilot queue parsing/storage. |
| Common/src/mekwars/common/campaign/CCampaign.java | Adds campaign client-side decoding and BM state. |
| Common/src/mekwars/common/campaign/CBMUnit.java | Adds client-side black market unit representation. |
| Common/src/mekwars/common/campaign/CArmy.java | Adds client-side army model + stats helpers. |
| Common/src/mekwars/common/campaign/Buildings.java | Adds building template container. |
| Common/src/mekwars/common/VerticalLayout.java | Adds vertical layout manager utility. |
| Common/src/mekwars/common/TerrainProvider.java | Adds terrain provider abstraction. |
| Common/src/mekwars/common/Terrain.java | Moves terrain model into mekwars.common + modernizes some code. |
| Common/src/mekwars/common/SubFaction.java | Adds sub-faction config container. |
| Common/src/mekwars/common/Player.java | Adds player model with flags and settings. |
| Common/src/mekwars/common/PlanetEnvironments.java | Adds planet environment collection + serialization. |
| Common/src/mekwars/common/MutableSerializable.java | Adds interface for “mutable fields only” serialization. |
| Common/src/mekwars/common/MegaMekPilotOption.java | Adds MegaMek pilot option container. |
| Common/src/mekwars/common/MWXmlSerializable.java | Moves XML-serializable interface into mekwars.common. |
| Common/src/mekwars/common/MWXMLWriter.java | Adds XStream-backed XML writer utility. |
| Common/src/mekwars/common/MMGame.java | Adds serializable MM game listing wrapper. |
| Common/src/mekwars/common/GameWrapper.java | Adds adapter around MegaMek Game. |
| Common/src/mekwars/common/GameInterface.java | Adds interface abstracting winner/entity harvest. |
| Common/src/mekwars/common/Equipment.java | Adds equipment cost/production container. |
| Common/src/mekwars/common/Continent.java | Adds continent/environment container + equality implementation. |
| Common/src/mekwars/common/BMEquipment.java | Updates MegaMek equipment imports + tech parsing logic. |
| Common/src/mekwars/common/Army.java | Moves army model into mekwars.common + modernizes code. |
| Common/settings.gradle | Adds standalone Gradle settings for Common module. |
| Common/build.gradle | Adds Java 21 toolchain + dependencies + preview compilation for Common. |
| .vscode/settings.json | Removes VS Code Java settings (cleanup). |
| .vscode/launch.json | Removes VS Code launch configs (cleanup). |
| .gradle/buildOutputCleanup/cache.properties | Removes Gradle cache artifact from repo (cleanup). |
| .github/workflows/qa-test-build.yml | Adds manual QA build workflow + artifact upload. |
| .github/workflows/nightly-ci.yml | Adds nightly scheduled CI (tests + build) across JDKs. |
| .github/workflows/java-doc.yml | Adds Javadoc generation + GitHub Pages deployment. |
| .github/workflows/java-doc-on-pr.yml | Adds PR Javadoc build. |
| .github/workflows/dependency-scan.yml | Adds Gradle dependency submission workflow. |
| .github/workflows/codeql-analysis.yml | Adds CodeQL scanning workflow. |
| .github/workflows/code-coverage.yml | Adds CI workflow producing coverage output for Codecov. |
| .github/workflows/ci.yml | Adds PR CI workflow (tests + build + artifacts). |
| .github/workflows/checkstyle.yml | Adds Checkstyle workflow. |
| .github/dependabot.yml | Adds Dependabot updates for GitHub Actions. |
| .github/codecov.yml | Adds Codecov configuration. |
| .github/ISSUE_TEMPLATE/request_for_enhancement.yml | Adds RFE issue template. |
| .github/ISSUE_TEMPLATE/config.yml | Adds issue template configuration + support links. |
| .github/ISSUE_TEMPLATE/bug_report.yml | Adds bug report template. |
Files not reviewed (8)
- .idea/.name: Language not supported
- .idea/compiler.xml: Language not supported
- .idea/gradle.xml: Language not supported
- .idea/inspectionProfiles/Project_Default.xml: Language not supported
- .idea/jarRepositories.xml: Language not supported
- .idea/misc.xml: Language not supported
- .idea/vcs.xml: Language not supported
- .idea/workspace.xml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| for (int i = 0; i < flagNames.size(); i++) { | ||
| if (flagNames.get(i).equalsIgnoreCase(name)) { | ||
| return i; |
| package mekwars.common.campaign.targetsystems; | ||
|
|
||
| public class TargetTypeOutOfBoundsException extends Exception { | ||
| public TargetTypeOutOfBoundsException(int type) { |
| public static Object decode(String s) { | ||
| Object result = null; | ||
| String sobj = TransportCodec.unescape(s); | ||
| try { | ||
| ByteArrayInputStream bais = new ByteArrayInputStream(sobj.getBytes()); | ||
| ObjectInputStream ois = new ObjectInputStream(bais); | ||
| result = ois.readObject(); |
| ./gradlew build -x test -PextraVersion="QA-PR-${{ inputs.pr_number }}-${{ env.COMMIT_SHORT_SHA }}" | ||
| else | ||
| ./gradlew build -x test -PextraVersion="QA-Build-${{ env.COMMIT_SHORT_SHA }}" |
| fi | ||
| echo "- **Commit:** ${{ env.COMMIT_SHORT_SHA }}" >> $GITHUB_STEP_SUMMARY | ||
| echo "- **Branch:** ${{ github.ref_name }}" >> $GITHUB_STEP_SUMMARY | ||
| echo "- **Java Version:** 17" >> $GITHUB_STEP_SUMMARY |
Enabled Checkstyle for all applications Enabeled base imports for MM in all apps
MWLogger Replacements Light refactoring.
| continue; | ||
| } | ||
| ammoCharge *= refillShots; | ||
| cost += ammoCharge; |
| long mills = (repairOrder.getEndTime() - System.currentTimeMillis());///60000; | ||
|
|
||
| if (mills < 0) { | ||
| mills += CampaignMain.campaignMain.getDoubleConfig("TimeForEachRepairPoint") * 1000; |
Added methods back into MM. De-depreciated methods in MM.
Added/Updated license headers to files modified.
| } | ||
|
|
||
| @Override | ||
| public boolean equals(Object o) { |
| private java.util.Hashtable<java.net.InetAddress, Long> banips = new java.util.Hashtable<java.net.InetAddress, Long>(); | ||
| private java.util.Hashtable<String, String> banaccounts = new java.util.Hashtable<String, String>(); | ||
| private java.util.Hashtable<String, Long> ISPlog = new java.util.Hashtable<String, Long>(); | ||
| private java.util.Hashtable<MWClientInfo, java.net.InetAddress> iphelp = new java.util.Hashtable<MWClientInfo, java.net.InetAddress>(); |
| allthose.add(newUser); | ||
| ips.put(hisip, allthose); | ||
| } | ||
| iphelp.put(newUser, hisip); |
| return; | ||
| } | ||
|
|
||
| java.net.InetAddress hisip = iphelp.get(user); |
| } | ||
| } | ||
| } | ||
| iphelp.remove(user); |
| /** | ||
| * @author Helge Richter | ||
| */ | ||
| public class Continent { |
| import java.util.TreeSet; | ||
|
|
||
|
|
||
| public class MMGame implements Serializable { |