diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3f0b1aa..df2f5a4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,21 +1,123 @@ -# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json +name: Build Plugin -name: Build +env: + plugin_name: Visibility -on: - workflow_dispatch: +on: push: + paths-ignore: + - .editorconfig + - .gitattributes + - .github/** + - .gitignore + - CHANGELOG.md + - LICENSE + - README.md branches: - - master + - dev + workflow_dispatch: + inputs: + dalamud_branch: + description: 'Dalamud Branch' + required: true + default: 'master' + type: choice + options: + - master + - stg jobs: - pull_request: + build: + name: Build runs-on: ubuntu-latest + env: + NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages + steps: - - name: Creates pull request - uses: daemitus/DalamudPluginPR2@master - with: - token: ${{ secrets.PAT }} - plugin_name: Visibility - project_path: Visibility - plugin_owners: SheepGoMeh + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + cache: true + cache-dependency-path: ${{ env.plugin_name }}/packages.lock.json + dotnet-version: 9.0.x + + - name: Determine Dalamud Branch + id: branch + run: | + COMMIT_MSG='${{ github.event.head_commit.message }}' + if [[ -n "${{ github.event.inputs.dalamud_branch }}" ]]; then + echo "branch=${{ github.event.inputs.dalamud_branch }}" >> $GITHUB_OUTPUT + elif [[ "${{ github.event.ref }}" == "refs/heads/stg" ]] || [[ "$COMMIT_MSG" == "[stg]"* ]]; then + echo "branch=stg" >> $GITHUB_OUTPUT + else + echo "branch=master" >> $GITHUB_OUTPUT + fi + + - name: Download Dalamud + env: + DALAMUD_URL: > + ${{ fromJson('{ + "master": "https://goatcorp.github.io/dalamud-distrib/latest.zip", + "stg": "https://goatcorp.github.io/dalamud-distrib/stg/latest.zip", + }')[steps.branch.outputs.branch] }} + run: | + curl -o latest.zip ${{ env.DALAMUD_URL }} + mkdir -p ~/.xlcore/dalamud/Hooks/dev/ + unzip latest.zip -d ~/.xlcore/dalamud/Hooks/dev/ + + - name: Restore dependencies + run: dotnet restore --locked-mode + + - name: Build + run: dotnet build --no-restore -c Release -clp:NoSummary + + - name: Get project path + id: project_path + run: | + PROJECT_FILE=$(dotnet sln list | grep -i "${{ env.plugin_name }}") + PROJECT_PATH=$(dirname "$PROJECT_FILE") + echo "project_path=$PROJECT_PATH" >> $GITHUB_OUTPUT + + - name: Rename manifest + if: github.event_name != 'pull_request' + run: mv ${{ steps.project_path.outputs.project_path }}/bin/Release/${{ env.plugin_name }}/${{ env.plugin_name }}.json ${{ steps.project_path.outputs.project_path }}/bin/Release/${{ env.plugin_name }}/manifest.json + + - name: Upload Build Artifact + if: github.event_name != 'pull_request' + uses: actions/upload-artifact@v4 + with: + path: ${{ steps.project_path.outputs.project_path }}/bin/Release/${{ env.plugin_name }}/* + + release: + name: Release + needs: build + if: success() && startsWith(github.ref, 'refs/tags/v') && github.event_name != 'pull_request' + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Download Build Artifact + uses: actions/download-artifact@v4 + + - name: Extract release notes + id: extract-release-notes + uses: ffurrer2/extract-release-notes@v2 + + - name: Release + uses: softprops/action-gh-release@v2 + with: + name: ${{ env.plugin_name }} ${{ github.ref_name }} + body: ${{ steps.extract-release-notes.outputs.release_notes }} + files: artifact/* + + - name: Trigger Repo Update + uses: peter-evans/repository-dispatch@v3 + with: + token: ${{ secrets.PAT }} + repository: ${{ github.repository_owner }}/${{ github.event.repository.name }} + event-type: new-release \ No newline at end of file diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 0000000..c8c69f4 --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,21 @@ +# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json + +name: Create Pull Request + +on: + workflow_dispatch: + push: + branches: + - master + +jobs: + pull_request: + runs-on: ubuntu-latest + steps: + - name: Creates pull request + uses: daemitus/DalamudPluginPR2@master + with: + token: ${{ secrets.PAT }} + plugin_name: Visibility + project_path: Visibility + plugin_owners: SheepGoMeh diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b42d6f5 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,221 @@ +# Changelog + +## [1.1.8.3] (2025-03-28) +* Updated plugin for 7.2 +* API 12 + +## [1.1.8.2] (2024-11-15) +* Updated plugin for 7.1 + +## [1.1.8.1] (2024-10-27) +* Fixes a loading error with `VoidList` and `Whitelist` + +## [1.1.8.0] (2024-09-30) +* Updated VoidList to support account tracking (You will not be able to see character name changes or account information) +* Updated Whitelist to track characters by their ID + +## [1.1.7.5] (2024-08-08) +* Added a feature to show target of target when hidden by other settings + +## [1.1.7.4] (2024-08-07) +* Fixes incorrect check for names in VoidList and Whitelist + +## [1.1.7.3] (2024-07-24) +* Fixed FC and VoidList/Whitelist string comparison which led to them not functioning + +## [1.1.7.2] (2024-07-24) +* Fixed FC check for local player + +## [1.1.7.1] (2024-07-05) +* Support Dawntrail (Thanks @Infiziert90) +* Removed ContextMenu support until further notice +* API 10 + +## [1.1.6.0] (2023-10-04) +* API 9 + +## [1.1.5.1] (2023-07-05) +* Fix Whitelist UI adding entries to VoidList + +## [1.1.5.0] (2023-07-02) +* Refactored UI code to address disappearing menu issues + +## [1.1.4.10] (2023-06-01) +* Replace `ContainsKey` with `TryGetValue` to avoid accessing `itemsDictionary` twice +* Rework TerritoryTypeWhitelist and populate it from `Lumina.Excel.GeneratedSheets` by using `TerritoryIntendedUse` + +## [1.1.4.9] (2023-05-25) +* Change friend checks +* Remove unused code + +## [1.1.4.8] (2023-01-22) +* Fix bound by duty check to exclude the treasure hunt duty + +## [1.1.4.7] (2023-01-14) +* Added Sylphstep to the TerritoryTypeWhitelist + +## [1.1.4.6] (2023-01-10) +* Update to net7 + +## [1.1.4.5] (2023-01-07) +* Improve performance +* Change how VoidList and Whitelist lookup works in frameworkHandler and add RemoveChecked method and ShowPlayer method supporting name lookup in ObjectTable +* Add a Disable flag check to frameworkHandler +* Add missing ShowPlayer method call to DrawVoidList +* Remove counter hack +* Move MinionHandler to PlayerHandler as minions will not be shown when the attached player is hidden +* Introduce ShowGameObject and handle minions in HideGameObject +* Fix incorrect container in ShowAll and stop setting RenderFlag +* Add support for bard performance mode + +## [1.1.4.0] (2022-11-04) +* Fix own player being hidden in cutscenes +* Removed dependency on SigScanner and moved code to be handled on framework update + +## [1.1.3.7] (2022-10-20) +* Make VoidList function regardless of the Enabled state +* Use NamePlate widget instead of NowLoading widget to figure out if objects should be hidden + +## [1.1.3.6] (2022-06-23) +* Fix incorrect boolean assignment +* Remove private accessor from Language property to allow loading from configuration file + +## [1.1.3.5] (2022-06-12) +* Change dead player detection +* Make settings code less hacky +* Update to net6 + +## [1.1.3.3] (2022-07-20) +* Prevent hiding characters while using Duty recorder playback + +## [1.1.3.2] (2022-07-19) +* Improve friend detection +* Reintroduce context menus +* Change HideStar to a global setting + +## [1.1.3.0] (2022-07-11) +* Change how cross world party objectid is detected and unify with groupmanager into a single method +* Fix party member detection for CharacterDisableDrawDetour +* Move DrawVoidList and DrawWhitelist into their own files +* Implement configuration per territory +* Add Chocobo Square and Gold Saucer to the list of allowedTerritory +* Add currentEditedConfig to not affect local settings while editing other area configs +* Add localization for new options + +## [1.1.2.1] (2022-07-07) +* Remove context menus until further notice +* Change how voided player logic is handled and prevent hiding pets inside duties +* Improve party member detection and support cross-world parties + +## [1.1.1.5] (2022-04-15) +* Remove XivCommon and ILRepack dependencies and switch to Dalamud ContextMenu +* Update signatures +* Update DalamudPackager to 2.1.6 and remove special packing step +* API 6 + +## [1.1.1.4] (2022-01-01) +* Make sure condition WatchingCutscene is not set when cleaning up +* Fix up relevant StatusFlags + +## [1.1.1.3] (2021-12-29) +* IPC Implementation +* Hack in a fix for character disappearing in cutscenes +* Use NowLoading widget instead of FadeMiddle to address #18 + +## [1.1.1.0] (2021-09-09) +* Add localization +* Add visibility icon +* API 4 + +## [1.1.0.0] (2021-09-09) +* Change project to SDK style +* Change TargetFramework to net5.0 + +## [1.0.4.2] (2021-06-09) +* Completely remove checking for ActorId in favor of Name and Homeworld +* Call ImGui.End() even if ImGui.Begin() returns false + +## [1.0.4.1] (2021-05-31) +* Disable while viewing cutscenes +* Add DalamudPackager package +* Rename _contextMenu to PluginContextMenu and make it public +* Add ability to toggle context menu functionality + +## [1.0.4.0] (2021-05-18) +* Change framework version to 4.8 +* Refactor variable names, add ContextMenu (XivCommon) and add emote filtering to VoidList message filter + +## [1.0.3.5] (2021-05-07) +* Fix incorrect command names for whitelist +* Allow hiding players in ocean fishing +* Allow hiding players in The Diadem + +## [1.0.3.4] (2021-04-27) +* Unhide everything when plugin gets disabled + +## [1.0.3.3] (2021-04-19) +* Simplify refresh check +* Add refresh command +* Rework voidlist and whitelist interface to use sortable tables + +## [1.0.3.2] (2021-04-16) +* Only clear buffer array when target is a PlayerCharacter +* Rework configuration interface +* Add setting to toggle operation of plugin + +## [1.0.3.1] (2021-04-14) +* Rework Refresh functionality + +## [1.0.3.0] (2021-04-14) +* Change UnsafeArrayEqual to require a single length value +* Stop checking ActorId and use Name and Homeworld instead for VoidItem +* Use payloads to handle messages correctly +* Discard unused code +* Use reflection to get automatic backing field +* Use IconPayload instead of raw bytes +* Introduce option to hide Earthly Star in combat +* Use LocalPlayer instead of `Actors[0]` +* Add Whitelist functionality +* API 3 + +## [1.0.2.7] (2021-01-12) +* Implemented signatures + +## [1.0.1.2] (2020-09-30) +* Changed timer to 20ms +* Reduced error logging for Release build +* Added icons to chat for `/voidplayer` and `/voidtargetplayer` +* Corrected datacenter check for `/voidplayer` + +## [1.0.1.1] (2020-09-20) +* Added a whitelist for areas like Leap of Faith +* Added an event to show configuration +* Reduced performance impact +* Added a check to prevent hiding Earthly Star +* Added a check to prevent duplicate entries of worlds when manually adding a name to the VoidList + +## [1.0.1.0] (2020-09-14) +* Removed the ability to hide minions individually + +## [1.0.0.9] (2020-09-12) +* Address a null referencing bug by adding a proper null check for the reason argument in `/void` command +* Added own player's actor to the list of actors to be refreshed when pressing `Refresh` option +* Added a check to verify that the player's own actor is not in the collection of actors to be modified +* Added the option to filter hidden actors by free company + +## [1.0.0.8] (2020-09-11) +* Added a check to make sure player is not bound by duty before hiding other players +* Removed space checking for Reason input box +* Made VoidList button open or close based on whether or not the window is visible + +## [1.0.0.7] (2020-09-11) +* Add a check to make sure that player is not bound by duty before hiding other players + +## [1.0.0.6] (2020-09-11) +* Fix incorrect order in PlaceholderResolver Init method +* Change friends collection to Dictionary for faster lookup +* Move expression outside of predicate for better readability and usability +* Change friends to HashSet and remove partyMembers collection in favor of accessing _partyActorId.Contains instead. + +## [1.0.0.0] (2020-09-10) +* Initial release \ No newline at end of file