{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.SCMTrigger$SCMTriggerCause",
          "shortDescription" : "Started by an SCM change"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 333,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "3a711577530dc539787bfaf68770717b515018f1",
            "branch" : [
              {
                "SHA1" : "3a711577530dc539787bfaf68770717b515018f1",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3a711577530dc539787bfaf68770717b515018f1",
            "branch" : [
              {
                "SHA1" : "3a711577530dc539787bfaf68770717b515018f1",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "3a711577530dc539787bfaf68770717b515018f1",
        "branch" : [
          {
            "SHA1" : "3a711577530dc539787bfaf68770717b515018f1",
            "name" : "refs/remotes/origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/mcMMO-Dev/mcMMO.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    {
      "displayPath" : "mcMMO.jar",
      "fileName" : "mcMMO.jar",
      "relativePath" : "target/mcMMO.jar"
    },
    {
      "displayPath" : "original-mcMMO.jar",
      "fileName" : "original-mcMMO.jar",
      "relativePath" : "target/original-mcMMO.jar"
    }
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#333",
  "duration" : 102128,
  "estimatedDuration" : 135282,
  "executor" : None,
  "fullDisplayName" : "mcMMO #333",
  "id" : "333",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 333,
  "queueId" : 205,
  "result" : "SUCCESS",
  "timestamp" : 1783588748658,
  "url" : "https://popicraft.net/jenkins/job/mcMMO/333/",
  "builtOn" : "Builder",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/main/java/com/gmail/nossr50/mcMMO.java",
          "src/main/java/com/gmail/nossr50/runnables/skills/DelayedHerbalismXPCheckTask.java",
          "src/test/java/com/gmail/nossr50/skills/herbalism/HerbalismMultiBlockPlantXpTest.java",
          "src/main/java/com/gmail/nossr50/runnables/skills/PlantCollapseXpTask.java",
          "src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java",
          "Changelog.txt"
        ],
        "commitId" : "3a711577530dc539787bfaf68770717b515018f1",
        "timestamp" : 1783588077000,
        "author" : {
          "absoluteUrl" : "https://popicraft.net/jenkins/user/nossr50",
          "fullName" : "nossr50"
        },
        "authorEmail" : "nossr50@gmail.com",
        "comment" : "Verify multi-block plants actually break before paying Herbalism XP\u000a\u000aVanilla destroys the rest of a bamboo, sugar cane, kelp, cactus,\u000achorus, or hanging vine plant with scheduled block ticks on later\u000aticks, cascading one block per tick. XP for the whole plant was paid\u000aduring the BlockBreakEvent, so breaking a segment and instantly\u000areplacing it collected XP for blocks that never broke.\u000a\u000aThe rest of the plant is now claimed by a per-tick verification task\u000athat only pays XP for blocks that are verifiably gone (air, or water\u000afor waterlogged plants) once the collapse window elapses. Positions\u000acan only be claimed by one task at a time and claims are revoked when\u000aa new break event takes over a position, so no block is paid twice.\u000a\u000aThis also revives XP for cactus and chorus columns: their traversal\u000awas aborting immediately because the origin block pre-seeded the\u000avisited set, so connected blocks never paid XP at all.\u000a\u000aFixes #5311\u000a",
        "date" : "2026-07-09 02:07:57 -0700",
        "id" : "3a711577530dc539787bfaf68770717b515018f1",
        "msg" : "Verify multi-block plants actually break before paying Herbalism XP",
        "paths" : [
          {
            "editType" : "add",
            "file" : "src/test/java/com/gmail/nossr50/skills/herbalism/HerbalismMultiBlockPlantXpTest.java"
          },
          {
            "editType" : "add",
            "file" : "src/main/java/com/gmail/nossr50/runnables/skills/PlantCollapseXpTask.java"
          },
          {
            "editType" : "edit",
            "file" : "src/main/java/com/gmail/nossr50/runnables/skills/DelayedHerbalismXPCheckTask.java"
          },
          {
            "editType" : "edit",
            "file" : "src/main/java/com/gmail/nossr50/mcMMO.java"
          },
          {
            "editType" : "edit",
            "file" : "src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java"
          },
          {
            "editType" : "edit",
            "file" : "Changelog.txt"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://popicraft.net/jenkins/user/nossr50",
      "fullName" : "nossr50"
    }
  ]
}