Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 13, 2025

  • Explore repository structure and understand vassalization system
  • Review existing commands (vassalize, swearfealty)
  • Understand relationship service and how vassal requests work
  • Create MfFactionDeclineVassalizationCommand
  • Add language strings for decline vassalization command (all languages)
  • Wire command into MfFactionCommand
  • Add permission to plugin.yml
  • Update help command messages
  • Run code review (noted translation improvements for non-English locales)
  • Run security checks (passed)
  • Apply translations for German, French, and Portuguese language files
  • Fix French language file encoding corruption from merge conflict

Implementation Summary

What was changed:

  1. New Command: MfFactionDeclineVassalizationCommand allows factions to decline vassalization requests
  2. Command Aliases: declinevassalization and declinevassalisation (British spelling)
  3. Permission: mf.declinevassalization (default: true, uses swearFealty faction permission)
  4. Language Support: Added properly translated messages to all 5 supported languages (en_US, en_GB, de_DE, fr_FR, pt_BR)
  5. Documentation: Updated plugin.yml with command description and help text

How it works:

  • When Faction A sends a vassalization request using /f vassalize B, a VASSAL relationship is created from A to B
  • Faction B can now decline using /f declinevassalization A, which deletes the VASSAL relationship
  • Both factions receive appropriate notifications
  • Tab completion shows only factions with pending requests

Recent updates:

  • Fixed French language file encoding corruption that was reintroduced during merge conflict resolution
Original prompt

This section details on the original issue you should resolve

<issue_title>Allow factions to decline vassalisation requests</issue_title>
<issue_description>Vassalisation requests currently stick around until they are accepted, there should be a way to decline them.</issue_description>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
Copilot AI changed the title [WIP] Add ability for factions to decline vassalisation requests Add command to decline vassalization requests Dec 13, 2025
Copy link

Copilot AI left a comment

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 adds a new command /faction declinevassalization that allows factions to decline pending vassalization requests. Currently, vassalization requests persist until accepted, and this feature provides a way to explicitly reject them.

Key Changes

  • New command implementation with proper permission checking and relationship management
  • Integration with existing faction command system including aliases for US and GB spelling variants
  • Localization support for multiple languages (en_US, en_GB, de_DE, fr_FR, pt_BR)

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/main/kotlin/com/dansplugins/factionsystem/command/faction/declinevassalization/MfFactionDeclineVassalizationCommand.kt New command implementation that deletes pending VASSAL relationships and sends notifications to both factions
src/main/kotlin/com/dansplugins/factionsystem/command/faction/MfFactionCommand.kt Integration of the new command with aliases and tab completion routing
src/main/resources/plugin.yml Added permission definition and command documentation
src/main/resources/lang/lang_en_US.properties Added English (US) localization strings for all command messages and notifications
src/main/resources/lang/lang_en_GB.properties Added English (GB) localization strings with British spelling (vassalisation)
src/main/resources/lang/lang_pt_BR.properties Added localization entries (currently in English, should be Portuguese)
src/main/resources/lang/lang_fr_FR.properties Added localization entries (currently in English, should be French)
src/main/resources/lang/lang_de_DE.properties Added localization entries (currently in English, should be German)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@dmccoystephenson
Copy link
Member

@copilot address comments

…uese

Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
@dmccoystephenson dmccoystephenson marked this pull request as ready for review December 28, 2025 04:25
…uests

# Conflicts:
#	src/main/resources/lang/lang_fr_FR.properties
@dmccoystephenson
Copy link
Member

@copilot resolve failing CI check

Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 1, 2026

@copilot resolve failing CI check

Fixed the failing CI check in commit d4d2250. The issue was encoding corruption in the French language file that was reintroduced during the merge conflict resolution. The LanguageFileEncodingTest was detecting double-encoded UTF-8 characters (e.g., "é" instead of "é"). All corrupted characters have been fixed and the file now passes the encoding validation tests.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • hub.spigotmc.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.base/java.nio.charset=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED -XX:MaxMetaspaceSize=256m (dns block)
  • jitpack.io
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.base/java.nio.charset=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED -XX:MaxMetaspaceSize=256m (dns block)
  • repo.dansplugins.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.base/java.nio.charset=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED -XX:MaxMetaspaceSize=256m (dns block)
  • repo.extendedclip.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.base/java.nio.charset=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED -XX:MaxMetaspaceSize=256m (dns block)
  • repo.mikeprimm.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.base/java.nio.charset=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED -XX:MaxMetaspaceSize=256m (dns block)
  • repo.rpkit.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.base/java.nio.charset=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED -XX:MaxMetaspaceSize=256m (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

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.

2 participants