Skip to content

Upgrade to java 21 and gradle 9#6

Open
rjhancock wants to merge 35 commits into
mainfrom
upgrade-to-java-21-and-gradle-9
Open

Upgrade to java 21 and gradle 9#6
rjhancock wants to merge 35 commits into
mainfrom
upgrade-to-java-21-and-gradle-9

Conversation

@rjhancock

Copy link
Copy Markdown
  • Adds GitHub Actions
  • Update build scripts to work with MM repos.

Copilot AI review requested due to automatic review settings April 25, 2026 21:05

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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 .gitignore to 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.

Comment thread .github/workflows/ci.yml Outdated
Comment on lines +23 to +57
- 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
Comment on lines +51 to +92
- 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
Comment thread settings.gradle Outdated
Comment on lines +3 to +12
include "Common"
include "HPGNet"
include "MekWarsAdmin"
include "MekWarsAutoUpdate"
include "MekWarsClient"
include "MekWarsDedicated"
include "MekWarsOpEditor"
include "MekWarsServer"
include "MekWarsTracker"
include "PlanetDataConverter"
Comment thread .github/workflows/qa-test-build.yml Outdated
Comment on lines +25 to +71
- 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
Comment thread Common/build.gradle
Comment thread Common/build.gradle
Comment thread HPGNet/src/mekwars/hpgnet/HPGNet.java Outdated
Gson gson = builder.create();

try {
FileWriter file = new FileWriter(filename);
Comment thread Common/src/mekwars/common/gui/InnerStellarMap.java Fixed
Comment thread Common/src/mekwars/common/gui/InnerStellarMap.java Fixed
Comment thread MekWarsClient/src/mekwars/client/gui/dialog/BulkRepairDialog.java Fixed
Comment thread MekWarsClient/src/mekwars/client/gui/dialog/BulkRepairDialog.java Fixed
Comment thread MekWarsTracker/src/mekwars/tracker/MWTracker.java
Comment thread MekWarsTracker/src/mekwars/tracker/MWTracker.java
Comment thread MekWarsTracker/src/mekwars/tracker/MWTracker.java
Comment thread MekWarsTracker/src/mekwars/tracker/MWTracker.java
Comment thread MekWarsTracker/src/mekwars/tracker/MWTracker.java
Copilot AI review requested due to automatic review settings April 26, 2026 06:11

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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 into mekwars.* 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.

Comment thread Common/src/mekwars/common/persistence/BinWriter.java
Comment thread Common/src/mekwars/common/persistence/BinReader.java
Comment on lines +69 to +76
public boolean equals(Object o) {
if (!(o instanceof Continent cont)) {
return false;
}

if (cont.getSize() != getSize()) {
return false;
}
Comment on lines +62 to +72
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;
}
Comment thread Common/src/mekwars/common/flags/FlagSet.java
Comment on lines +51 to +89
* 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);
}
}
Comment on lines +73 to +76
try {
server.close();
} catch (IOException e) {
MWLogger.errLog(e);
Comment on lines +79 to +80
final JsonArray historicalPlayersArray = obj.get("historicalPlayers").getAsJsonArray();
final JsonArray historicalGamesArray = obj.get("historicalGames").getAsJsonArray();
Comment on lines +44 to +46
./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
Comment thread MekWarsServer/src/mekwars/server/MWServ.java Fixed
Comment thread MekWarsServer/src/mekwars/server/MWServ.java Fixed
Comment thread MekWarsServer/src/mekwars/server/MWServ.java Fixed
Comment thread MekWarsServer/src/mekwars/server/MWServ.java Fixed
Comment thread Common/src/mekwars/common/Continent.java Fixed
Comment thread Common/src/mekwars/common/MMGame.java Fixed
Comment thread MekWarsServer/src/mekwars/server/MWClientInfo.java Fixed
Comment thread MekWarsServer/src/mekwars/server/campaign/SUnit.java Fixed
Copilot AI review requested due to automatic review settings April 26, 2026 23:21

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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 Common and HPGNet targeting 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() and sobj.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.

Comment on lines +73 to +76
try {
server.close();
} catch (IOException e) {
MWLogger.errLog(e);
Comment on lines +56 to +87
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);
Comment on lines +225 to +228
@Override
public String getName() {
return "";
}
Comment on lines +68 to +83
@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());
}
Comment on lines +62 to +72
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;
}
Comment on lines +65 to +67
echo "- **Commit:** ${{ env.COMMIT_SHORT_SHA }}" >> $GITHUB_STEP_SUMMARY
echo "- **Branch:** ${{ github.ref_name }}" >> $GITHUB_STEP_SUMMARY
echo "- **Java Version:** 17" >> $GITHUB_STEP_SUMMARY
Comment thread Common/src/mekwars/common/threads/ReaderThread.java Outdated
package mekwars.common.campaign.targetsystems;

public class TargetTypeOutOfBoundsException extends Exception {
public TargetTypeOutOfBoundsException(int type) {
Comment on lines +87 to +90
public double distanceSq(double xpos, double ypos) {
return Math.sqrt(Math.pow(x - xpos, 2) + Math.pow(y - ypos, 2));
}

Comment thread Common/build.gradle
Comment thread Common/src/mekwars/common/gui/dialogs/InfluencePointsDialog.java Fixed
Comment thread Common/src/mekwars/common/gui/dialogs/InfluencePointsDialog.java Fixed
Comment thread Common/src/mekwars/common/gui/dialogs/RewardPointsDialog.java Fixed
Comment thread Common/src/mekwars/common/gui/dialogs/AdvancedRepairDialog.java Fixed
Copilot AI review requested due to automatic review settings April 27, 2026 04:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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/src Java sources into the mekwars.common.* namespace (campaign, comms, flags, utilities).
  • Add Gradle build configuration for the Common module (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.

Comment thread Common/src/mekwars/common/flags/FlagSet.java
Comment on lines +66 to +68
for (int i = 0; i < flagNames.size(); i++) {
if (flagNames.get(i).equalsIgnoreCase(name)) {
return i;
Comment thread Common/src/mekwars/common/flags/ResultsFlags.java
package mekwars.common.campaign.targetsystems;

public class TargetTypeOutOfBoundsException extends Exception {
public TargetTypeOutOfBoundsException(int type) {
Comment thread Common/src/mekwars/common/threads/ReaderThread.java Outdated
Comment on lines +70 to +76
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();
Comment thread Common/build.gradle
Comment thread Common/build.gradle
Comment on lines +44 to +46
./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
Comment thread Common/src/mekwars/common/CampaignData.java Fixed
Comment thread Common/src/mekwars/common/CampaignData.java Fixed
Comment thread Common/src/mekwars/common/CampaignData.java Fixed
Comment thread Common/src/mekwars/common/CampaignData.java Fixed
Comment thread MekWarsClient/src/mekwars/client/protocol/DataFetchClient.java Fixed
Copilot AI review requested due to automatic review settings April 30, 2026 04:21

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Copilot AI review requested due to automatic review settings April 30, 2026 04:58

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Enabled Checkstyle for all applications
Enabeled base imports for MM in all apps
Copilot AI review requested due to automatic review settings May 1, 2026 05:04

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Copilot AI review requested due to automatic review settings May 15, 2026 19:15

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Comment thread MekWarsServer/src/mekwars/server/campaign/SArmy.java Fixed
continue;
}
ammoCharge *= refillShots;
cost += ammoCharge;
long mills = (repairOrder.getEndTime() - System.currentTimeMillis());///60000;

if (mills < 0) {
mills += CampaignMain.campaignMain.getDoubleConfig("TimeForEachRepairPoint") * 1000;
Copilot AI review requested due to automatic review settings May 26, 2026 22:40

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Copilot Bot review requested due to automatic review settings May 28, 2026 20:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

}

@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 {
Copilot Bot review requested due to automatic review settings June 1, 2026 15:39

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

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.

3 participants