diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..6b8570b2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,31 @@ +# Auto detect text files and perform LF normalization +* text=auto eol=lf + +# Source Code +*.java text diff=java eol=lf +*.xml text eol=lf +*.yml text eol=lf +*.yaml text eol=lf +*.json text eol=lf +*.md text eol=lf +*.txt text eol=lf +*.properties text eol=lf +*.sh text eol=lf +*.bat text eol=crlf +*.cmd text eol=crlf + +# Git files +.gitignore text eol=lf +.gitattributes text eol=lf + +# Binary files +*.jar binary +*.class binary +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.ico binary +*.zip binary +*.tar.gz binary +*.exe binary diff --git a/.github/workflows/pull-request-build.yml b/.github/workflows/pull-request-build.yml index fa6280eb..641690ef 100644 --- a/.github/workflows/pull-request-build.yml +++ b/.github/workflows/pull-request-build.yml @@ -2,20 +2,27 @@ name: WindSpigot PR Build on: pull_request: + paths-ignore: + - '**.md' + - '.gitattributes' + - '.gitignore' + workflow_dispatch: jobs: cleanup-and-build: + name: Verify PR Build & Tests runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, '[skip]')" steps: - - uses: actions/checkout@v3 + - name: Checkout Repository + uses: actions/checkout@v5 + - name: Set up JDK 18.0.1 - uses: actions/setup-java@v3 + uses: actions/setup-java@v5 with: distribution: 'temurin' - java-version: 18.0.1 - server-id: github + java-version: '18.0.1' cache: 'maven' - name: Build with Maven - run: mvn clean package --file pom.xml + run: mvn clean package --batch-mode --file pom.xml diff --git a/.github/workflows/windspigot-build-and-upload.yml b/.github/workflows/windspigot-build-and-upload.yml index 450fbbce..24440f57 100644 --- a/.github/workflows/windspigot-build-and-upload.yml +++ b/.github/workflows/windspigot-build-and-upload.yml @@ -2,41 +2,45 @@ name: WindSpigot Build and Upload on: push: + branches: + - master + paths-ignore: + - '**.md' + - '.gitattributes' + - '.gitignore' + workflow_dispatch: jobs: build-and-upload: + name: Build & Publish Artifacts runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, '[skip]')" steps: - - uses: actions/checkout@v4 + - name: Checkout Repository + uses: actions/checkout@v5 - name: Set up JDK 18.0.1 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'temurin' - java-version: 18.0.1 - server-id: github + java-version: '18.0.1' cache: 'maven' - - - name: Cache local Maven repository - uses: actions/cache@v4 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - + - name: Build with Maven - run: mvn package --file pom.xml - + run: mvn clean package --batch-mode --file pom.xml + - name: Upload Server Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: WindSpigot-server path: WindSpigot-Server/target/WindSpigot.jar + if-no-files-found: error + retention-days: 30 - name: Upload API Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: WindSpigot-API path: WindSpigot-API/target/WindSpigot-API.jar + if-no-files-found: error + retention-days: 30 diff --git a/README.md b/README.md index 503be7a5..5dc0a52a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# WindSpigot [![GitHub Workflow Status](https://github.com/Wind-Development/WindSpigot/actions/workflows/windspigot-build-and-upload.yml/badge.svg)](https://nightly.link/Wind-Development/WindSpigot/workflows/windspigot-build-and-upload/master/WindSpigot-server.zip) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/3c5ee8d2ef324d23ab085d89139ea0e7)](https://www.codacy.com/gh/Wind-Development/WindSpigot/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Wind-Development/WindSpigot&utm_campaign=Badge_Grade) [![Discord](https://img.shields.io/discord/1318787858768597042?label=discord)](https://discord.gg/hqbJvQZpV2) +# WindSpigot [![GitHub Workflow Status](https://github.com/Wind-Development/WindSpigot/actions/workflows/windspigot-build-and-upload.yml/badge.svg)](https://nightly.link/Wind-Development/WindSpigot/workflows/windspigot-build-and-upload/master/WindSpigot-server.zip) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/3c5ee8d2ef324d23ab085d89139ea0e7)](https://www.codacy.com/gh/Wind-Development/WindSpigot/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Wind-Development/WindSpigot&utm_campaign=Badge_Grade) [![Discord](https://img.shields.io/discord/1318787858768597042?label=discord)](https://discord.gg/hqbJvQZpV2) ##### WindSpigot is a 1.8.8 Minecraft server software focused on improving overall server performance and pvp mechanics based on a **[fork of NachoSpigot](https://github.com/Argarian-Network/NachoSpigot/tree/async-entity-tracker)**. @@ -41,6 +41,28 @@ See the patches list below. [WindSpigot-0016] Configurable weather changes [WindSpigot-0017] Configurable fishing rod speed multiplier +<--> by GamingOP69 +[WindSpigot-0018] Fix fireball and explosion knockback vector direction calculation (dynamic radius scaling) +[WindSpigot-0019] Fix NetworkManager flush cross-thread event loop submission and compression lookup +[WindSpigot-0020] Fix WorldTickManager lifecycle and dynamic world unload memory leaks +[WindSpigot-0021] Fix AsyncEntityTracker exception safety and deadlock prevention (try-finally latch countdown) +[WindSpigot-0022] Fix EntityTrackerEntry visibility rates (remove 5s tracking lag) +[WindSpigot-0023] Fix SpawnerCreature mob cap calculation and spectator check +[WindSpigot-0024] Fix TCPShield and PlayerHandshakeEvent null safety +[WindSpigot-0025] Validate block placement coordinates and direction in PlayerConnection +[WindSpigot-0026] Fix MinecraftServer process queue polling race and exception safety +[WindSpigot-0027] Optimize PlayerMap spatial lookups with Long2ObjectOpenHashMap and fix move() NPE +[WindSpigot-0028] Eliminate lambda allocations in ConcurrentIntHashMap +[WindSpigot-0029] Fix async pathfinding isSearching reset in SearchHandler (recovery on rejected tasks) +[WindSpigot-0030] Fix Java 9-25 version parsing in CustomTimingsHandler +[WindSpigot-0031] Fix CombatThread NPE race and Spigot404Write per-instance packet queues +[WindSpigot-0032] Fix LagCompensator multi-threaded data race between Netty IO and main thread +[WindSpigot-0033] Thread-safe double-checked locking for LazyInitVar and safe ServerConnection shutdown +[WindSpigot-0034] Thread-safe synchronized explosion density cache for async TNT calculations +[WindSpigot-0035] Exception-safe queued packet flushing in PlayerConnection +[WindSpigot-0036] AntiCrash custom payload serializer null safety +[WindSpigot-0037] Auto-patch legacy Citizens EmptyChannel for Netty 4.1 compatibility + [PandaSpigot-0115] Break up and make tab spam limits configurable [PandaSpigot-0072] Fix Bugs with Spigot Mob Spawn Logic [PandaSpigot-0105] Fix SPIGOT-2622: Only one player receiving the server shutdown message