Skip to content

2.5.0

Choose a tag to compare

@dmccoystephenson dmccoystephenson released this 19 Sep 17:28
b560bcf

2.5.0

A server on 2.4.1 can drop this jar in without touching its data or commands. Two things will be noticed on the first start: the plugin now sends anonymous usage events (plugin name, version, command names) to the author's trace server unless turned off, and the console will log an "Outdated config.yml" error until config-version is set to 0.2. Beyond that, this release closes a Silk Touch experience-farming exploit, makes Hardiness level from mob and player hits as it always should have, honours the configured experience factor and max level, saves progress whenever the server saves its worlds, and adds a per-skill switch to turn off each skill's benefit while keeping its levelling.

Changes

Skills and gameplay

  • Block-based skills (Mining, Digging, Quarrying, Lumberjack, Farming, Floriculture) no longer grant experience for blocks a player placed, closing the place-and-re-mine exploit with Silk Touch-harvested ores (#146)
  • Hardiness now triggers on damage from mobs, other players, projectiles and blocks such as cactus or magma, not only from environmental damage (#156)
  • The defaultExperienceIncreaseFactor and defaultMaxLevel settings are now actually applied; previously the factor was always 1.2 and /ss info always reported a max level of 100 (#160)
  • Every skill's benefit can be turned off individually with a new <skill>BenefitEnabled key while its experience gain continues; missing keys default to on (#138, #168)

Persistence

  • Player records are saved whenever the server saves a world (/save-all or the server's own autosave), so a crash loses at most the progress since the last world save (#162)

Usage reporting

  • The plugin reports startup and command usage to https://trace.danielstephenson.dev, off the main thread and never blocking a tick. It can be turned off per plugin (usage-reporting.enabled: false in config.yml), server-wide (enabled: false in plugins/trace/config.yml, created on first start), or via the TRACE_USAGE_REPORTING=off / DO_NOT_TRACK=1 environment variables. The console states on every start whether reporting is on (#167, #170)

Fixes

  • Startup on Minecraft 26.x no longer fails during material initialisation (#164)
  • The minimum-version check works again; it previously threw on every startup and could never disable the plugin on an unsupported server (#166)
  • A message.yml from an older release no longer causes skill triggers to fail on keys it is missing; bundled defaults fill the gaps without overwriting customisations (#148)
  • Crafting no longer throws IllegalArgumentException on recipes the server cannot resolve, such as certain merge and repair crafts (#147)
  • Skills no longer retain every event they handle, fixing a steady memory leak on long-running servers (#152)

Upgrade notes

  • Decide whether you want usage reporting. It is on by default. To turn it off for this plugin, set usage-reporting.enabled: false in plugins/SimpleSkills/config.yml (the block is written into an existing config on first start). To turn it off for every plugin that reports to trace, set enabled: false in plugins/trace/config.yml.
  • Set config-version: 0.2 in config.yml to silence the "Outdated config.yml" error. The new *BenefitEnabled keys are optional; add them from the bundled config.yml if you want to toggle a skill's benefit.
  • If you changed defaultExperienceIncreaseFactor from 1.2, be aware that value now takes effect and players' levelling curve will change accordingly.
  • Servers older than Minecraft 1.13 will now have the plugin disabled at startup instead of failing silently later.

Version

2.4.1 → 2.5.0 — MINOR. Mechanical floor from comparing the two jars: MINOR.
Judgment: Nothing here changes an existing server's data format, command syntax, permission defaults, or the meaning of an existing config key. The usage-reporting block, the per-skill benefit toggles, the world-save persistence, and the wider Hardiness triggers are new behaviour or new data written, which is minor. The experience-factor fix (#160) does read a key the plugin previously ignored, and the config-version bump will log an 'outdated config.yml' error on upgraded servers, but both are bug fixes to make documented settings work rather than incompatible changes; the removed Triggers enum was unreferenced and is visible to the mechanical check. The pom carries 3.0.0-SNAPSHOT, but the floor rules are about compatibility, so minor stands.

  • minor: default config key added: athleteBenefitEnabled
  • minor: default config key added: boatingBenefitEnabled
  • minor: default config key added: breedingBenefitEnabled
  • minor: default config key added: cardioBenefitEnabled
  • minor: default config key added: craftingBenefitEnabled
  • minor: default config key added: diggingBenefitEnabled
  • minor: default config key added: duelingBenefitEnabled
  • minor: default config key added: enchantingBenefitEnabled
  • minor: default config key added: farmingBenefitEnabled
  • minor: default config key added: fishingBenefitEnabled
  • minor: default config key added: floricultureBenefitEnabled
  • minor: default config key added: glidingBenefitEnabled
  • minor: default config key added: hardinessBenefitEnabled
  • minor: default config key added: lumberjackBenefitEnabled
  • minor: default config key added: miningBenefitEnabled
  • minor: default config key added: monsterHuntingBenefitEnabled
  • minor: default config key added: pyromaniacBenefitEnabled
  • minor: default config key added: quarryingBenefitEnabled
  • minor: default config key added: ridingBenefitEnabled
  • minor: default config key added: strengthBenefitEnabled
  • minor: default config key added: usage-reporting.enabled
  • minor: default config key added: usage-reporting.endpoint
  • minor: default config key added: usage-reporting.key
  • minor: default config value changed: config-version 0.1 → 0.2
  • minor: storage path changed: src/main/java/dansplugins/simpleskills/storage/StorageService.java
Java API changes (informational — nothing depends on this plugin)
  • public class removed: dansplugins.simpleskills.enums.Triggers
  • public class added: dansplugins.simpleskills.listeners.PlacedBlockListener
  • public class added: dansplugins.simpleskills.listeners.WorldSaveEventListener
  • public class added: dansplugins.simpleskills.trace.TraceClient
  • public class added: dansplugins.simpleskills.trace.TraceClient$Builder
  • dansplugins.simpleskills.config.ConfigService: added public boolean isUsageReportingEnabled();
  • dansplugins.simpleskills.config.ConfigService: added public java.lang.String getUsageReportingEndpoint();
  • dansplugins.simpleskills.config.ConfigService: added public java.lang.String getUsageReportingKey();
  • dansplugins.simpleskills.config.ConfigService: added public void saveUsageReportingDefaultsIfNotPresent();
  • dansplugins.simpleskills.services.StorageService: removed/changed public void save();
  • dansplugins.simpleskills.services.StorageService: added public synchronized void save();
  • dansplugins.simpleskills.skill.abs.AbstractSkill: added protected boolean isBenefitEnabled();
  • dansplugins.simpleskills.skill.abs.AbstractSkill: added public int getMaxLevel();
  • dansplugins.simpleskills.skill.skills.Hardiness: added public void damageByBlockEvent(org.bukkit.event.entity.EntityDamageByBlockEvent);
  • dansplugins.simpleskills.skill.skills.Hardiness: added public void damageByEntityEvent(org.bukkit.event.entity.EntityDamageByEntityEvent);

Verification

Booted twice on a real Spigot server before publication — boot gate run (10 assertions passed). This release carries the exact jar that was verified.

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson