Files
SunsetRQ7 ab0ba5362e release: v3.5.0.2 - fix treasure map leak, end-city/spike idempotency bugs, remove redundant work
Fixed:
- MapSeedInterceptor filtered map icons against "TREASURE"/"PILLAGER"/"BASTION",
  none of which are real vanilla map decoration IDs (verified against
  org.bukkit.map.MapCursor.Type directly - no such constants exist). Buried
  treasure maps actually use TARGET_X, which was missing entirely, so treasure
  locations were never actually scrambled despite being a named threat-model
  signal. Now matches TARGET_X; the two dead checks were removed.
- EndCityProtector and EndSpikeProtector both marked a chunk/world "already
  processed" as soon as it was scanned, even when modify_world was off and
  nothing was changed. Turning modify_world on later (including via
  /asc toggle) would silently do nothing for anything already loaded once
  while it was off. Both now only mark "done" when the modification actually
  ran, or (End Cities) when a chunk provably has no End City at all.
- All four dragon-respawn end crystals independently started their own
  300-attempt polling loop to detect the end of the respawn animation - 4x
  the necessary scheduled work per fight. Now guarded to one loop per world.

Optimized:
- Replaced reflection-based scheduled-task cancellation in FoliaSchedulerUtil
  with direct typed ScheduledTask#cancel() calls (verified against the real
  Paper API); a genuine cancel failure is no longer silently swallowed.
- Removed a pointless seconds->ticks->seconds round-trip in the seed rotation
  interval config.
- Simplified the End Spike pillar-angle formula to a plain decagon spacing
  expression (behaviorally identical, verified via cos/sin periodicity).
- Trimmed default config.yml to essential settings; fuller explanations live
  in the README instead of long inline comments.
2026-07-24 16:08:17 +03:30

168 lines
6.7 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>me.sunsetrqsv</groupId>
<artifactId>AntiSeedCracker</artifactId>
<version>3.5.0.2</version>
<packaging>jar</packaging>
<name>AntiSeedCracker</name>
<description>Professional multi-layer world seed protection plugin for Paper, Purpur, and Folia 26.1.2+</description>
<properties>
<maven.compiler.release>25</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<id>papermc</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
<repository>
<id>codemc-repo</id>
<url>https://repo.codemc.io/repository/maven-releases/</url>
</repository>
<repository>
<id>spigotmc-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>dev.folia</groupId>
<artifactId>folia-api</artifactId>
<version>26.1.2.build.8-stable</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.retrooper</groupId>
<artifactId>packetevents-spigot</artifactId>
<version>2.13.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.3.1-jre</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.md-5</groupId>
<artifactId>bungeecord-chat</artifactId>
<version>1.20-R0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.bstats</groupId>
<artifactId>bstats-bukkit</artifactId>
<version>3.2.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<release>25</release>
<debug>false</debug>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.2</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<minimizeJar>false</minimizeJar>
<relocations>
<relocation>
<pattern>com.github.retrooper.packetevents</pattern>
<shadedPattern>me.sunsetrqsv.antiseedcracker.lib.packetevents</shadedPattern>
</relocation>
<relocation>
<pattern>io.github.retrooper.packetevents</pattern>
<shadedPattern>me.sunsetrqsv.antiseedcracker.lib.packetevents.impl</shadedPattern>
</relocation>
<relocation>
<pattern>org.bstats</pattern>
<shadedPattern>me.sunsetrqsv.antiseedcracker.lib.bstats</shadedPattern>
</relocation>
</relocations>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/MANIFEST.MF</exclude>
<exclude>**/module-info.class</exclude>
</excludes>
</filter>
<filter>
<artifact>net.kyori:adventure-api</artifact>
<excludes><exclude>**</exclude></excludes>
</filter>
<filter>
<artifact>net.kyori:adventure-key</artifact>
<excludes><exclude>**</exclude></excludes>
</filter>
<filter>
<artifact>net.kyori:examination-api</artifact>
<excludes><exclude>**</exclude></excludes>
</filter>
<filter>
<artifact>net.kyori:examination-string</artifact>
<excludes><exclude>**</exclude></excludes>
</filter>
<filter>
<artifact>org.jetbrains:annotations</artifact>
<excludes><exclude>**</exclude></excludes>
</filter>
<filter>
<artifact>com.github.retrooper:packetevents-spigot</artifact>
<excludes>
<exclude>plugin.yml</exclude>
<exclude>META-INF/maven/**</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>