fix: ignore initialCount in donations-only mode (#430) - #433

Merged
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count
May 12, 2026
Merged

fix: ignore initialCount in donations-only mode (#430)#433
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count

Conversation

@tastybento

Copy link
Copy Markdown
Member

Follow-up to #432.

Problem

When an admin enables donations-only: true mid-game on a server with existing islands, the level formula goes wildly negative.

Each island already has an initialCount recorded from the one-off starter-island scan that ran when the island was created (under `zero-new-island-levels: true`). The formula subtracts that count from raw points:

```java
long modifiedPoints = rawPoints - initialCount;
```

Under donations-only, `rawPoints` is just the donated total (often 0 to a few thousand), but `initialCount` was the full block count of the starter island (millions of points worth). `modifiedPoints` becomes hugely negative and so does the resulting level.

Fix

Ignore `initialCount` whenever `donations-only` is enabled:

  • `IslandLevelCalculator.calculateLevel(rawPoints)` — no longer subtracts `initialCount`
  • The `pointsFromCurrentLevel` binary search in `tidyUp()` — no longer floors `lo` at `initialCount`
  • The diagnostic report — no longer prints the "Initial island count" line (would be misleading, since it isn't applied to the level math in this mode)

The flag combines cleanly with `zero-new-island-levels`: `zero-new-island-levels && !donations-only` is the new gate.

Test plan

  • `mvn test` — 217/217 pass
  • In-game: enable `donations-only: true` on a server with an existing island that has a non-zero `initialCount`; `/island level` reports a sensible non-negative level based on donated blocks only
  • In-game: disable `donations-only` again; existing scan-based level calc still subtracts `initialCount` as before

🤖 Generated with Claude Code

tastybentoand others added 3 commits May 12, 2026 07:17
When an admin enables donations-only mid-game, existing islands already
have an `initialCount` recorded from the original starter-island scan.
The level formula subtracts `initialCount` from raw points when
`zero-new-island-levels` is on — but under donations-only, raw points
are just the donated total, which is typically much smaller than the
recorded initial count. The result was a huge negative `modifiedPoints`
and a wildly negative level.
Ignore `initialCount` (treat as 0) whenever donations-only is enabled:
- `calculateLevel(rawPoints)` no longer subtracts it
- the `pointsFromCurrentLevel` binary search no longer floors at it
- the report no longer prints it (would be misleading, since it isn't
applied to the level math)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous short-circuit in scanIsland skipped every scan when
donations-only was enabled — including the zero-island scan that fires
on IslandCreatedEvent / IslandResettedEvent. That meant new islands
created during a donations-only window got initialCount = 0, so if an
admin later disabled donations-only the player's entire current block
total would count toward their level (no handicap subtracted).
Restrict the short-circuit to non-zero-island scans. The zero-island
scan still runs and records the real handicap into initialCount; it is
just ignored by calculateLevel while donations-only is on (per the
existing fix in this PR). When donations-only is later disabled, the
stored initialCount is correctly subtracted by calculateLevel as before.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The viewer button at the bottom of the top-ten panel rendered with a
"Click to view" tooltip and opened the details panel on click. That
panel breaks down scanned blocks, which is meaningless in donations-only
mode (and /island detail is not registered there either).
Add a donations-only check to the VIEW action filter so it's removed
from activeActions for that button when donations-only is enabled.
Filtering it out also drops the "Click to view" tooltip — no template
or locale change needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@tastybento
tastybento merged commit 2f4703b into developMay 12, 2026
3 checks passed
@tastybento
tastybento deleted the fix/430-donations-only-ignore-initial-count branch May 12, 2026 14:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@tastybento
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix: ignore initialCount in donations-only mode (#430) - #433

Merged
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count
May 12, 2026
Merged

fix: ignore initialCount in donations-only mode (#430)#433
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count

Conversation

@tastybento

Copy link
Copy Markdown
Member

Follow-up to #432.

Problem

When an admin enables donations-only: true mid-game on a server with existing islands, the level formula goes wildly negative.

Each island already has an initialCount recorded from the one-off starter-island scan that ran when the island was created (under `zero-new-island-levels: true`). The formula subtracts that count from raw points:

```java
long modifiedPoints = rawPoints - initialCount;
```

Under donations-only, `rawPoints` is just the donated total (often 0 to a few thousand), but `initialCount` was the full block count of the starter island (millions of points worth). `modifiedPoints` becomes hugely negative and so does the resulting level.

Fix

Ignore `initialCount` whenever `donations-only` is enabled:

  • `IslandLevelCalculator.calculateLevel(rawPoints)` — no longer subtracts `initialCount`
  • The `pointsFromCurrentLevel` binary search in `tidyUp()` — no longer floors `lo` at `initialCount`
  • The diagnostic report — no longer prints the "Initial island count" line (would be misleading, since it isn't applied to the level math in this mode)

The flag combines cleanly with `zero-new-island-levels`: `zero-new-island-levels && !donations-only` is the new gate.

Test plan

  • `mvn test` — 217/217 pass
  • In-game: enable `donations-only: true` on a server with an existing island that has a non-zero `initialCount`; `/island level` reports a sensible non-negative level based on donated blocks only
  • In-game: disable `donations-only` again; existing scan-based level calc still subtracts `initialCount` as before

🤖 Generated with Claude Code

tastybentoand others added 3 commits May 12, 2026 07:17
When an admin enables donations-only mid-game, existing islands already
have an `initialCount` recorded from the original starter-island scan.
The level formula subtracts `initialCount` from raw points when
`zero-new-island-levels` is on — but under donations-only, raw points
are just the donated total, which is typically much smaller than the
recorded initial count. The result was a huge negative `modifiedPoints`
and a wildly negative level.
Ignore `initialCount` (treat as 0) whenever donations-only is enabled:
- `calculateLevel(rawPoints)` no longer subtracts it
- the `pointsFromCurrentLevel` binary search no longer floors at it
- the report no longer prints it (would be misleading, since it isn't
applied to the level math)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous short-circuit in scanIsland skipped every scan when
donations-only was enabled — including the zero-island scan that fires
on IslandCreatedEvent / IslandResettedEvent. That meant new islands
created during a donations-only window got initialCount = 0, so if an
admin later disabled donations-only the player's entire current block
total would count toward their level (no handicap subtracted).
Restrict the short-circuit to non-zero-island scans. The zero-island
scan still runs and records the real handicap into initialCount; it is
just ignored by calculateLevel while donations-only is on (per the
existing fix in this PR). When donations-only is later disabled, the
stored initialCount is correctly subtracted by calculateLevel as before.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The viewer button at the bottom of the top-ten panel rendered with a
"Click to view" tooltip and opened the details panel on click. That
panel breaks down scanned blocks, which is meaningless in donations-only
mode (and /island detail is not registered there either).
Add a donations-only check to the VIEW action filter so it's removed
from activeActions for that button when donations-only is enabled.
Filtering it out also drops the "Click to view" tooltip — no template
or locale change needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@tastybento
tastybento merged commit 2f4703b into developMay 12, 2026
3 checks passed
@tastybento
tastybento deleted the fix/430-donations-only-ignore-initial-count branch May 12, 2026 14:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@tastybento
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: ignore initialCount in donations-only mode (#430) - #433

Merged
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count
May 12, 2026
Merged

fix: ignore initialCount in donations-only mode (#430)#433
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count

Conversation

@tastybento

Copy link
Copy Markdown
Member

Follow-up to #432.

Problem

When an admin enables donations-only: true mid-game on a server with existing islands, the level formula goes wildly negative.

Each island already has an initialCount recorded from the one-off starter-island scan that ran when the island was created (under `zero-new-island-levels: true`). The formula subtracts that count from raw points:

```java
long modifiedPoints = rawPoints - initialCount;
```

Under donations-only, `rawPoints` is just the donated total (often 0 to a few thousand), but `initialCount` was the full block count of the starter island (millions of points worth). `modifiedPoints` becomes hugely negative and so does the resulting level.

Fix

Ignore `initialCount` whenever `donations-only` is enabled:

  • `IslandLevelCalculator.calculateLevel(rawPoints)` — no longer subtracts `initialCount`
  • The `pointsFromCurrentLevel` binary search in `tidyUp()` — no longer floors `lo` at `initialCount`
  • The diagnostic report — no longer prints the "Initial island count" line (would be misleading, since it isn't applied to the level math in this mode)

The flag combines cleanly with `zero-new-island-levels`: `zero-new-island-levels && !donations-only` is the new gate.

Test plan

  • `mvn test` — 217/217 pass
  • In-game: enable `donations-only: true` on a server with an existing island that has a non-zero `initialCount`; `/island level` reports a sensible non-negative level based on donated blocks only
  • In-game: disable `donations-only` again; existing scan-based level calc still subtracts `initialCount` as before

🤖 Generated with Claude Code

tastybentoand others added 3 commits May 12, 2026 07:17
When an admin enables donations-only mid-game, existing islands already
have an `initialCount` recorded from the original starter-island scan.
The level formula subtracts `initialCount` from raw points when
`zero-new-island-levels` is on — but under donations-only, raw points
are just the donated total, which is typically much smaller than the
recorded initial count. The result was a huge negative `modifiedPoints`
and a wildly negative level.
Ignore `initialCount` (treat as 0) whenever donations-only is enabled:
- `calculateLevel(rawPoints)` no longer subtracts it
- the `pointsFromCurrentLevel` binary search no longer floors at it
- the report no longer prints it (would be misleading, since it isn't
applied to the level math)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous short-circuit in scanIsland skipped every scan when
donations-only was enabled — including the zero-island scan that fires
on IslandCreatedEvent / IslandResettedEvent. That meant new islands
created during a donations-only window got initialCount = 0, so if an
admin later disabled donations-only the player's entire current block
total would count toward their level (no handicap subtracted).
Restrict the short-circuit to non-zero-island scans. The zero-island
scan still runs and records the real handicap into initialCount; it is
just ignored by calculateLevel while donations-only is on (per the
existing fix in this PR). When donations-only is later disabled, the
stored initialCount is correctly subtracted by calculateLevel as before.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The viewer button at the bottom of the top-ten panel rendered with a
"Click to view" tooltip and opened the details panel on click. That
panel breaks down scanned blocks, which is meaningless in donations-only
mode (and /island detail is not registered there either).
Add a donations-only check to the VIEW action filter so it's removed
from activeActions for that button when donations-only is enabled.
Filtering it out also drops the "Click to view" tooltip — no template
or locale change needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@tastybento
tastybento merged commit 2f4703b into developMay 12, 2026
3 checks passed
@tastybento
tastybento deleted the fix/430-donations-only-ignore-initial-count branch May 12, 2026 14:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@tastybento
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: ignore initialCount in donations-only mode (#430) - #433

Merged
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count
May 12, 2026
Merged

fix: ignore initialCount in donations-only mode (#430)#433
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count

Conversation

@tastybento

Copy link
Copy Markdown
Member

Follow-up to #432.

Problem

When an admin enables donations-only: true mid-game on a server with existing islands, the level formula goes wildly negative.

Each island already has an initialCount recorded from the one-off starter-island scan that ran when the island was created (under `zero-new-island-levels: true`). The formula subtracts that count from raw points:

```java
long modifiedPoints = rawPoints - initialCount;
```

Under donations-only, `rawPoints` is just the donated total (often 0 to a few thousand), but `initialCount` was the full block count of the starter island (millions of points worth). `modifiedPoints` becomes hugely negative and so does the resulting level.

Fix

Ignore `initialCount` whenever `donations-only` is enabled:

  • `IslandLevelCalculator.calculateLevel(rawPoints)` — no longer subtracts `initialCount`
  • The `pointsFromCurrentLevel` binary search in `tidyUp()` — no longer floors `lo` at `initialCount`
  • The diagnostic report — no longer prints the "Initial island count" line (would be misleading, since it isn't applied to the level math in this mode)

The flag combines cleanly with `zero-new-island-levels`: `zero-new-island-levels && !donations-only` is the new gate.

Test plan

  • `mvn test` — 217/217 pass
  • In-game: enable `donations-only: true` on a server with an existing island that has a non-zero `initialCount`; `/island level` reports a sensible non-negative level based on donated blocks only
  • In-game: disable `donations-only` again; existing scan-based level calc still subtracts `initialCount` as before

🤖 Generated with Claude Code

tastybentoand others added 3 commits May 12, 2026 07:17
When an admin enables donations-only mid-game, existing islands already
have an `initialCount` recorded from the original starter-island scan.
The level formula subtracts `initialCount` from raw points when
`zero-new-island-levels` is on — but under donations-only, raw points
are just the donated total, which is typically much smaller than the
recorded initial count. The result was a huge negative `modifiedPoints`
and a wildly negative level.
Ignore `initialCount` (treat as 0) whenever donations-only is enabled:
- `calculateLevel(rawPoints)` no longer subtracts it
- the `pointsFromCurrentLevel` binary search no longer floors at it
- the report no longer prints it (would be misleading, since it isn't
applied to the level math)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous short-circuit in scanIsland skipped every scan when
donations-only was enabled — including the zero-island scan that fires
on IslandCreatedEvent / IslandResettedEvent. That meant new islands
created during a donations-only window got initialCount = 0, so if an
admin later disabled donations-only the player's entire current block
total would count toward their level (no handicap subtracted).
Restrict the short-circuit to non-zero-island scans. The zero-island
scan still runs and records the real handicap into initialCount; it is
just ignored by calculateLevel while donations-only is on (per the
existing fix in this PR). When donations-only is later disabled, the
stored initialCount is correctly subtracted by calculateLevel as before.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The viewer button at the bottom of the top-ten panel rendered with a
"Click to view" tooltip and opened the details panel on click. That
panel breaks down scanned blocks, which is meaningless in donations-only
mode (and /island detail is not registered there either).
Add a donations-only check to the VIEW action filter so it's removed
from activeActions for that button when donations-only is enabled.
Filtering it out also drops the "Click to view" tooltip — no template
or locale change needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@tastybento
tastybento merged commit 2f4703b into developMay 12, 2026
3 checks passed
@tastybento
tastybento deleted the fix/430-donations-only-ignore-initial-count branch May 12, 2026 14:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@tastybento
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix: ignore initialCount in donations-only mode (#430) - #433

Merged
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count
May 12, 2026
Merged

fix: ignore initialCount in donations-only mode (#430)#433
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count

Conversation

@tastybento

Copy link
Copy Markdown
Member

Follow-up to #432.

Problem

When an admin enables donations-only: true mid-game on a server with existing islands, the level formula goes wildly negative.

Each island already has an initialCount recorded from the one-off starter-island scan that ran when the island was created (under `zero-new-island-levels: true`). The formula subtracts that count from raw points:

```java
long modifiedPoints = rawPoints - initialCount;
```

Under donations-only, `rawPoints` is just the donated total (often 0 to a few thousand), but `initialCount` was the full block count of the starter island (millions of points worth). `modifiedPoints` becomes hugely negative and so does the resulting level.

Fix

Ignore `initialCount` whenever `donations-only` is enabled:

  • `IslandLevelCalculator.calculateLevel(rawPoints)` — no longer subtracts `initialCount`
  • The `pointsFromCurrentLevel` binary search in `tidyUp()` — no longer floors `lo` at `initialCount`
  • The diagnostic report — no longer prints the "Initial island count" line (would be misleading, since it isn't applied to the level math in this mode)

The flag combines cleanly with `zero-new-island-levels`: `zero-new-island-levels && !donations-only` is the new gate.

Test plan

  • `mvn test` — 217/217 pass
  • In-game: enable `donations-only: true` on a server with an existing island that has a non-zero `initialCount`; `/island level` reports a sensible non-negative level based on donated blocks only
  • In-game: disable `donations-only` again; existing scan-based level calc still subtracts `initialCount` as before

🤖 Generated with Claude Code

tastybentoand others added 3 commits May 12, 2026 07:17
When an admin enables donations-only mid-game, existing islands already
have an `initialCount` recorded from the original starter-island scan.
The level formula subtracts `initialCount` from raw points when
`zero-new-island-levels` is on — but under donations-only, raw points
are just the donated total, which is typically much smaller than the
recorded initial count. The result was a huge negative `modifiedPoints`
and a wildly negative level.
Ignore `initialCount` (treat as 0) whenever donations-only is enabled:
- `calculateLevel(rawPoints)` no longer subtracts it
- the `pointsFromCurrentLevel` binary search no longer floors at it
- the report no longer prints it (would be misleading, since it isn't
applied to the level math)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous short-circuit in scanIsland skipped every scan when
donations-only was enabled — including the zero-island scan that fires
on IslandCreatedEvent / IslandResettedEvent. That meant new islands
created during a donations-only window got initialCount = 0, so if an
admin later disabled donations-only the player's entire current block
total would count toward their level (no handicap subtracted).
Restrict the short-circuit to non-zero-island scans. The zero-island
scan still runs and records the real handicap into initialCount; it is
just ignored by calculateLevel while donations-only is on (per the
existing fix in this PR). When donations-only is later disabled, the
stored initialCount is correctly subtracted by calculateLevel as before.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The viewer button at the bottom of the top-ten panel rendered with a
"Click to view" tooltip and opened the details panel on click. That
panel breaks down scanned blocks, which is meaningless in donations-only
mode (and /island detail is not registered there either).
Add a donations-only check to the VIEW action filter so it's removed
from activeActions for that button when donations-only is enabled.
Filtering it out also drops the "Click to view" tooltip — no template
or locale change needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@tastybento
tastybento merged commit 2f4703b into developMay 12, 2026
3 checks passed
@tastybento
tastybento deleted the fix/430-donations-only-ignore-initial-count branch May 12, 2026 14:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@tastybento
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: ignore initialCount in donations-only mode (#430) - #433

Merged
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count
May 12, 2026
Merged

fix: ignore initialCount in donations-only mode (#430)#433
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count

Conversation

@tastybento

Copy link
Copy Markdown
Member

Follow-up to #432.

Problem

When an admin enables donations-only: true mid-game on a server with existing islands, the level formula goes wildly negative.

Each island already has an initialCount recorded from the one-off starter-island scan that ran when the island was created (under `zero-new-island-levels: true`). The formula subtracts that count from raw points:

```java
long modifiedPoints = rawPoints - initialCount;
```

Under donations-only, `rawPoints` is just the donated total (often 0 to a few thousand), but `initialCount` was the full block count of the starter island (millions of points worth). `modifiedPoints` becomes hugely negative and so does the resulting level.

Fix

Ignore `initialCount` whenever `donations-only` is enabled:

  • `IslandLevelCalculator.calculateLevel(rawPoints)` — no longer subtracts `initialCount`
  • The `pointsFromCurrentLevel` binary search in `tidyUp()` — no longer floors `lo` at `initialCount`
  • The diagnostic report — no longer prints the "Initial island count" line (would be misleading, since it isn't applied to the level math in this mode)

The flag combines cleanly with `zero-new-island-levels`: `zero-new-island-levels && !donations-only` is the new gate.

Test plan

  • `mvn test` — 217/217 pass
  • In-game: enable `donations-only: true` on a server with an existing island that has a non-zero `initialCount`; `/island level` reports a sensible non-negative level based on donated blocks only
  • In-game: disable `donations-only` again; existing scan-based level calc still subtracts `initialCount` as before

🤖 Generated with Claude Code

tastybentoand others added 3 commits May 12, 2026 07:17
When an admin enables donations-only mid-game, existing islands already
have an `initialCount` recorded from the original starter-island scan.
The level formula subtracts `initialCount` from raw points when
`zero-new-island-levels` is on — but under donations-only, raw points
are just the donated total, which is typically much smaller than the
recorded initial count. The result was a huge negative `modifiedPoints`
and a wildly negative level.
Ignore `initialCount` (treat as 0) whenever donations-only is enabled:
- `calculateLevel(rawPoints)` no longer subtracts it
- the `pointsFromCurrentLevel` binary search no longer floors at it
- the report no longer prints it (would be misleading, since it isn't
applied to the level math)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous short-circuit in scanIsland skipped every scan when
donations-only was enabled — including the zero-island scan that fires
on IslandCreatedEvent / IslandResettedEvent. That meant new islands
created during a donations-only window got initialCount = 0, so if an
admin later disabled donations-only the player's entire current block
total would count toward their level (no handicap subtracted).
Restrict the short-circuit to non-zero-island scans. The zero-island
scan still runs and records the real handicap into initialCount; it is
just ignored by calculateLevel while donations-only is on (per the
existing fix in this PR). When donations-only is later disabled, the
stored initialCount is correctly subtracted by calculateLevel as before.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The viewer button at the bottom of the top-ten panel rendered with a
"Click to view" tooltip and opened the details panel on click. That
panel breaks down scanned blocks, which is meaningless in donations-only
mode (and /island detail is not registered there either).
Add a donations-only check to the VIEW action filter so it's removed
from activeActions for that button when donations-only is enabled.
Filtering it out also drops the "Click to view" tooltip — no template
or locale change needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@tastybento
tastybento merged commit 2f4703b into developMay 12, 2026
3 checks passed
@tastybento
tastybento deleted the fix/430-donations-only-ignore-initial-count branch May 12, 2026 14:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@tastybento
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: ignore initialCount in donations-only mode (#430) - #433

Merged
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count
May 12, 2026
Merged

fix: ignore initialCount in donations-only mode (#430)#433
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count

Conversation

@tastybento

Copy link
Copy Markdown
Member

Follow-up to #432.

Problem

When an admin enables donations-only: true mid-game on a server with existing islands, the level formula goes wildly negative.

Each island already has an initialCount recorded from the one-off starter-island scan that ran when the island was created (under `zero-new-island-levels: true`). The formula subtracts that count from raw points:

```java
long modifiedPoints = rawPoints - initialCount;
```

Under donations-only, `rawPoints` is just the donated total (often 0 to a few thousand), but `initialCount` was the full block count of the starter island (millions of points worth). `modifiedPoints` becomes hugely negative and so does the resulting level.

Fix

Ignore `initialCount` whenever `donations-only` is enabled:

  • `IslandLevelCalculator.calculateLevel(rawPoints)` — no longer subtracts `initialCount`
  • The `pointsFromCurrentLevel` binary search in `tidyUp()` — no longer floors `lo` at `initialCount`
  • The diagnostic report — no longer prints the "Initial island count" line (would be misleading, since it isn't applied to the level math in this mode)

The flag combines cleanly with `zero-new-island-levels`: `zero-new-island-levels && !donations-only` is the new gate.

Test plan

  • `mvn test` — 217/217 pass
  • In-game: enable `donations-only: true` on a server with an existing island that has a non-zero `initialCount`; `/island level` reports a sensible non-negative level based on donated blocks only
  • In-game: disable `donations-only` again; existing scan-based level calc still subtracts `initialCount` as before

🤖 Generated with Claude Code

tastybentoand others added 3 commits May 12, 2026 07:17
When an admin enables donations-only mid-game, existing islands already
have an `initialCount` recorded from the original starter-island scan.
The level formula subtracts `initialCount` from raw points when
`zero-new-island-levels` is on — but under donations-only, raw points
are just the donated total, which is typically much smaller than the
recorded initial count. The result was a huge negative `modifiedPoints`
and a wildly negative level.
Ignore `initialCount` (treat as 0) whenever donations-only is enabled:
- `calculateLevel(rawPoints)` no longer subtracts it
- the `pointsFromCurrentLevel` binary search no longer floors at it
- the report no longer prints it (would be misleading, since it isn't
applied to the level math)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous short-circuit in scanIsland skipped every scan when
donations-only was enabled — including the zero-island scan that fires
on IslandCreatedEvent / IslandResettedEvent. That meant new islands
created during a donations-only window got initialCount = 0, so if an
admin later disabled donations-only the player's entire current block
total would count toward their level (no handicap subtracted).
Restrict the short-circuit to non-zero-island scans. The zero-island
scan still runs and records the real handicap into initialCount; it is
just ignored by calculateLevel while donations-only is on (per the
existing fix in this PR). When donations-only is later disabled, the
stored initialCount is correctly subtracted by calculateLevel as before.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The viewer button at the bottom of the top-ten panel rendered with a
"Click to view" tooltip and opened the details panel on click. That
panel breaks down scanned blocks, which is meaningless in donations-only
mode (and /island detail is not registered there either).
Add a donations-only check to the VIEW action filter so it's removed
from activeActions for that button when donations-only is enabled.
Filtering it out also drops the "Click to view" tooltip — no template
or locale change needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@tastybento
tastybento merged commit 2f4703b into developMay 12, 2026
3 checks passed
@tastybento
tastybento deleted the fix/430-donations-only-ignore-initial-count branch May 12, 2026 14:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@tastybento
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix: ignore initialCount in donations-only mode (#430) - #433

Merged
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count
May 12, 2026
Merged

fix: ignore initialCount in donations-only mode (#430)#433
tastybento merged 3 commits into
developfrom
fix/430-donations-only-ignore-initial-count

Conversation

@tastybento

Copy link
Copy Markdown
Member

Follow-up to #432.

Problem

When an admin enables donations-only: true mid-game on a server with existing islands, the level formula goes wildly negative.

Each island already has an initialCount recorded from the one-off starter-island scan that ran when the island was created (under `zero-new-island-levels: true`). The formula subtracts that count from raw points:

```java
long modifiedPoints = rawPoints - initialCount;
```

Under donations-only, `rawPoints` is just the donated total (often 0 to a few thousand), but `initialCount` was the full block count of the starter island (millions of points worth). `modifiedPoints` becomes hugely negative and so does the resulting level.

Fix

Ignore `initialCount` whenever `donations-only` is enabled:

  • `IslandLevelCalculator.calculateLevel(rawPoints)` — no longer subtracts `initialCount`
  • The `pointsFromCurrentLevel` binary search in `tidyUp()` — no longer floors `lo` at `initialCount`
  • The diagnostic report — no longer prints the "Initial island count" line (would be misleading, since it isn't applied to the level math in this mode)

The flag combines cleanly with `zero-new-island-levels`: `zero-new-island-levels && !donations-only` is the new gate.

Test plan

  • `mvn test` — 217/217 pass
  • In-game: enable `donations-only: true` on a server with an existing island that has a non-zero `initialCount`; `/island level` reports a sensible non-negative level based on donated blocks only
  • In-game: disable `donations-only` again; existing scan-based level calc still subtracts `initialCount` as before

🤖 Generated with Claude Code

tastybentoand others added 3 commits May 12, 2026 07:17
When an admin enables donations-only mid-game, existing islands already
have an `initialCount` recorded from the original starter-island scan.
The level formula subtracts `initialCount` from raw points when
`zero-new-island-levels` is on — but under donations-only, raw points
are just the donated total, which is typically much smaller than the
recorded initial count. The result was a huge negative `modifiedPoints`
and a wildly negative level.
Ignore `initialCount` (treat as 0) whenever donations-only is enabled:
- `calculateLevel(rawPoints)` no longer subtracts it
- the `pointsFromCurrentLevel` binary search no longer floors at it
- the report no longer prints it (would be misleading, since it isn't
applied to the level math)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous short-circuit in scanIsland skipped every scan when
donations-only was enabled — including the zero-island scan that fires
on IslandCreatedEvent / IslandResettedEvent. That meant new islands
created during a donations-only window got initialCount = 0, so if an
admin later disabled donations-only the player's entire current block
total would count toward their level (no handicap subtracted).
Restrict the short-circuit to non-zero-island scans. The zero-island
scan still runs and records the real handicap into initialCount; it is
just ignored by calculateLevel while donations-only is on (per the
existing fix in this PR). When donations-only is later disabled, the
stored initialCount is correctly subtracted by calculateLevel as before.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The viewer button at the bottom of the top-ten panel rendered with a
"Click to view" tooltip and opened the details panel on click. That
panel breaks down scanned blocks, which is meaningless in donations-only
mode (and /island detail is not registered there either).
Add a donations-only check to the VIEW action filter so it's removed
from activeActions for that button when donations-only is enabled.
Filtering it out also drops the "Click to view" tooltip — no template
or locale change needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@tastybento
tastybento merged commit 2f4703b into developMay 12, 2026
3 checks passed
@tastybento
tastybento deleted the fix/430-donations-only-ignore-initial-count branch May 12, 2026 14:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@tastybento