Master - #414

Merged
tastybento merged 21 commits into
developfrom
master
Apr 12, 2026
Merged

Master#414
tastybento merged 21 commits into
developfrom
master

Conversation

@tastybento

Copy link
Copy Markdown
Member

No description provided.

tastybentoand others added 21 commits April 2, 2025 09:25
…n plugins
Require BentoBox API 3.14.0 (addon.yml) and align the pom dependency with
the bentobox.version property so both stay in sync. All 17 locale files are
converted from legacy & color codes to MiniMessage tags now that the User
API supports them natively. Maven plugins are bumped to their latest stable
releases; the compiler plugin is forked to work around a plexus-compiler
in-process bug ("this.hashes is null") that otherwise breaks test-compile.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Players can permanently donate blocks to raise island level.
- /island donate: opens chest-style GUI to drag blocks in
- /island donate hand [amount]: quick donate from held item
- ISLAND_BLOCK_DONATION flag (default: owner, configurable to member)
- Donated points added to level calculation, persist across recalcs
- DONATED tab in island detail panel
- Donation audit log with timestamps and donor tracking
- Admin level report extended with donated blocks section
- Destructive action warnings on confirm button and GUI info
- Backwards compatible: null-safe fields for legacy island data
Adds the new donation feature strings (island.donate, ISLAND_BLOCK_DONATION
flag, donated tab button) to all non-English locales using English text as
placeholder for translators. Notes in CLAUDE.md that on-disk panel templates
are not overwritten on upgrade so release notes must call out panel changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The donation panel built items via Bukkit's deprecated setDisplayName/
setLore APIs and split the translated text on '|'. Two adjacent
MiniMessage spans of the same color collapse to a single legacy run
(e.g. "§cWarning…|destroyed…"), so splitting dropped the §c from the
second line and it rendered in default purple italic. Lore also got
Minecraft's default italic because the legacy String API does not
suppress it the way Adventure Components do.
Switch to displayName(Component)/lore(List<Component>), parse each
segment with Util.parseMiniMessageOrLegacy, suppress default italic,
and carry the active §color/§format codes across '|' splits so styles
do not get dropped on subsequent segments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require a re-run confirmation before /island donate hand destroys items,
fix tab completion to offer "hand" and the held stack size, route "help"
through the standard help handler, and format [points] placeholders via
the player's locale so large totals render with thousands separators.
Sync the new confirm-prompt key plus spacing and typo fixes across every
locale file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ity, locale spacing
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/0764e162-6b48-4cf7-b3e9-f344016416bd
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
Bumps BentoBox to 3.14.1-SNAPSHOT for the new Flag.Builder.minimumRank
API and uses it on BLOCK_DONATION so VISITOR/COOP/TRUSTED ranks can
never be selected as the donation rank — only MEMBER and above.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Extract [points] placeholder into a POINTS_PLACEHOLDER constant so
the literal is declared once instead of four times (S1192)
- Switch the GUI creation to the Component-based Bukkit.createInventory
overload so we are no longer calling the deprecated String variant
(S1874), and reuse removeDefaultItalic so the title matches the
styling rules used for item names
- Split onInventoryClick into small focused helpers
(handlePlayerInventoryClick, handleCancel, handleConfirm,
handleDonationSlotClick, isValidDonationItem,
distributeIntoDonationSlots). Drops cognitive complexity well below
the 15 threshold and fixes the brain-method warning (S3776, S6541)
- Rewrite the shift-click distribution loop as a while loop guarded by
amount > 0 and the two-branch splitWithStyleCarryover loop as an
if/else-if/else chain, so neither uses more than one break/continue
(S135)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require Member rank minimum on block donation flag
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ng, GUI-specific error message
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/753156c2-d054-4c6f-820a-48c0ffedbbbe
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
@tastybento
tastybento merged commit 23eec6c into developApr 12, 2026
1 of 2 checks passed
@sonarqubecloud

Copy link
Copy Markdown

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.

2 participants

@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

Master - #414

Merged
tastybento merged 21 commits into
developfrom
master
Apr 12, 2026
Merged

Master#414
tastybento merged 21 commits into
developfrom
master

Conversation

@tastybento

Copy link
Copy Markdown
Member

No description provided.

tastybentoand others added 21 commits April 2, 2025 09:25
…n plugins
Require BentoBox API 3.14.0 (addon.yml) and align the pom dependency with
the bentobox.version property so both stay in sync. All 17 locale files are
converted from legacy & color codes to MiniMessage tags now that the User
API supports them natively. Maven plugins are bumped to their latest stable
releases; the compiler plugin is forked to work around a plexus-compiler
in-process bug ("this.hashes is null") that otherwise breaks test-compile.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Players can permanently donate blocks to raise island level.
- /island donate: opens chest-style GUI to drag blocks in
- /island donate hand [amount]: quick donate from held item
- ISLAND_BLOCK_DONATION flag (default: owner, configurable to member)
- Donated points added to level calculation, persist across recalcs
- DONATED tab in island detail panel
- Donation audit log with timestamps and donor tracking
- Admin level report extended with donated blocks section
- Destructive action warnings on confirm button and GUI info
- Backwards compatible: null-safe fields for legacy island data
Adds the new donation feature strings (island.donate, ISLAND_BLOCK_DONATION
flag, donated tab button) to all non-English locales using English text as
placeholder for translators. Notes in CLAUDE.md that on-disk panel templates
are not overwritten on upgrade so release notes must call out panel changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The donation panel built items via Bukkit's deprecated setDisplayName/
setLore APIs and split the translated text on '|'. Two adjacent
MiniMessage spans of the same color collapse to a single legacy run
(e.g. "§cWarning…|destroyed…"), so splitting dropped the §c from the
second line and it rendered in default purple italic. Lore also got
Minecraft's default italic because the legacy String API does not
suppress it the way Adventure Components do.
Switch to displayName(Component)/lore(List<Component>), parse each
segment with Util.parseMiniMessageOrLegacy, suppress default italic,
and carry the active §color/§format codes across '|' splits so styles
do not get dropped on subsequent segments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require a re-run confirmation before /island donate hand destroys items,
fix tab completion to offer "hand" and the held stack size, route "help"
through the standard help handler, and format [points] placeholders via
the player's locale so large totals render with thousands separators.
Sync the new confirm-prompt key plus spacing and typo fixes across every
locale file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ity, locale spacing
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/0764e162-6b48-4cf7-b3e9-f344016416bd
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
Bumps BentoBox to 3.14.1-SNAPSHOT for the new Flag.Builder.minimumRank
API and uses it on BLOCK_DONATION so VISITOR/COOP/TRUSTED ranks can
never be selected as the donation rank — only MEMBER and above.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Extract [points] placeholder into a POINTS_PLACEHOLDER constant so
the literal is declared once instead of four times (S1192)
- Switch the GUI creation to the Component-based Bukkit.createInventory
overload so we are no longer calling the deprecated String variant
(S1874), and reuse removeDefaultItalic so the title matches the
styling rules used for item names
- Split onInventoryClick into small focused helpers
(handlePlayerInventoryClick, handleCancel, handleConfirm,
handleDonationSlotClick, isValidDonationItem,
distributeIntoDonationSlots). Drops cognitive complexity well below
the 15 threshold and fixes the brain-method warning (S3776, S6541)
- Rewrite the shift-click distribution loop as a while loop guarded by
amount > 0 and the two-branch splitWithStyleCarryover loop as an
if/else-if/else chain, so neither uses more than one break/continue
(S135)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require Member rank minimum on block donation flag
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ng, GUI-specific error message
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/753156c2-d054-4c6f-820a-48c0ffedbbbe
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
@tastybento
tastybento merged commit 23eec6c into developApr 12, 2026
1 of 2 checks passed
@sonarqubecloud

Copy link
Copy Markdown

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.

2 participants

@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

Master - #414

Merged
tastybento merged 21 commits into
developfrom
master
Apr 12, 2026
Merged

Master#414
tastybento merged 21 commits into
developfrom
master

Conversation

@tastybento

Copy link
Copy Markdown
Member

No description provided.

tastybentoand others added 21 commits April 2, 2025 09:25
…n plugins
Require BentoBox API 3.14.0 (addon.yml) and align the pom dependency with
the bentobox.version property so both stay in sync. All 17 locale files are
converted from legacy & color codes to MiniMessage tags now that the User
API supports them natively. Maven plugins are bumped to their latest stable
releases; the compiler plugin is forked to work around a plexus-compiler
in-process bug ("this.hashes is null") that otherwise breaks test-compile.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Players can permanently donate blocks to raise island level.
- /island donate: opens chest-style GUI to drag blocks in
- /island donate hand [amount]: quick donate from held item
- ISLAND_BLOCK_DONATION flag (default: owner, configurable to member)
- Donated points added to level calculation, persist across recalcs
- DONATED tab in island detail panel
- Donation audit log with timestamps and donor tracking
- Admin level report extended with donated blocks section
- Destructive action warnings on confirm button and GUI info
- Backwards compatible: null-safe fields for legacy island data
Adds the new donation feature strings (island.donate, ISLAND_BLOCK_DONATION
flag, donated tab button) to all non-English locales using English text as
placeholder for translators. Notes in CLAUDE.md that on-disk panel templates
are not overwritten on upgrade so release notes must call out panel changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The donation panel built items via Bukkit's deprecated setDisplayName/
setLore APIs and split the translated text on '|'. Two adjacent
MiniMessage spans of the same color collapse to a single legacy run
(e.g. "§cWarning…|destroyed…"), so splitting dropped the §c from the
second line and it rendered in default purple italic. Lore also got
Minecraft's default italic because the legacy String API does not
suppress it the way Adventure Components do.
Switch to displayName(Component)/lore(List<Component>), parse each
segment with Util.parseMiniMessageOrLegacy, suppress default italic,
and carry the active §color/§format codes across '|' splits so styles
do not get dropped on subsequent segments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require a re-run confirmation before /island donate hand destroys items,
fix tab completion to offer "hand" and the held stack size, route "help"
through the standard help handler, and format [points] placeholders via
the player's locale so large totals render with thousands separators.
Sync the new confirm-prompt key plus spacing and typo fixes across every
locale file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ity, locale spacing
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/0764e162-6b48-4cf7-b3e9-f344016416bd
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
Bumps BentoBox to 3.14.1-SNAPSHOT for the new Flag.Builder.minimumRank
API and uses it on BLOCK_DONATION so VISITOR/COOP/TRUSTED ranks can
never be selected as the donation rank — only MEMBER and above.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Extract [points] placeholder into a POINTS_PLACEHOLDER constant so
the literal is declared once instead of four times (S1192)
- Switch the GUI creation to the Component-based Bukkit.createInventory
overload so we are no longer calling the deprecated String variant
(S1874), and reuse removeDefaultItalic so the title matches the
styling rules used for item names
- Split onInventoryClick into small focused helpers
(handlePlayerInventoryClick, handleCancel, handleConfirm,
handleDonationSlotClick, isValidDonationItem,
distributeIntoDonationSlots). Drops cognitive complexity well below
the 15 threshold and fixes the brain-method warning (S3776, S6541)
- Rewrite the shift-click distribution loop as a while loop guarded by
amount > 0 and the two-branch splitWithStyleCarryover loop as an
if/else-if/else chain, so neither uses more than one break/continue
(S135)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require Member rank minimum on block donation flag
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ng, GUI-specific error message
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/753156c2-d054-4c6f-820a-48c0ffedbbbe
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
@tastybento
tastybento merged commit 23eec6c into developApr 12, 2026
1 of 2 checks passed
@sonarqubecloud

Copy link
Copy Markdown

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.

2 participants

@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

Master - #414

Merged
tastybento merged 21 commits into
developfrom
master
Apr 12, 2026
Merged

Master#414
tastybento merged 21 commits into
developfrom
master

Conversation

@tastybento

Copy link
Copy Markdown
Member

No description provided.

tastybentoand others added 21 commits April 2, 2025 09:25
…n plugins
Require BentoBox API 3.14.0 (addon.yml) and align the pom dependency with
the bentobox.version property so both stay in sync. All 17 locale files are
converted from legacy & color codes to MiniMessage tags now that the User
API supports them natively. Maven plugins are bumped to their latest stable
releases; the compiler plugin is forked to work around a plexus-compiler
in-process bug ("this.hashes is null") that otherwise breaks test-compile.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Players can permanently donate blocks to raise island level.
- /island donate: opens chest-style GUI to drag blocks in
- /island donate hand [amount]: quick donate from held item
- ISLAND_BLOCK_DONATION flag (default: owner, configurable to member)
- Donated points added to level calculation, persist across recalcs
- DONATED tab in island detail panel
- Donation audit log with timestamps and donor tracking
- Admin level report extended with donated blocks section
- Destructive action warnings on confirm button and GUI info
- Backwards compatible: null-safe fields for legacy island data
Adds the new donation feature strings (island.donate, ISLAND_BLOCK_DONATION
flag, donated tab button) to all non-English locales using English text as
placeholder for translators. Notes in CLAUDE.md that on-disk panel templates
are not overwritten on upgrade so release notes must call out panel changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The donation panel built items via Bukkit's deprecated setDisplayName/
setLore APIs and split the translated text on '|'. Two adjacent
MiniMessage spans of the same color collapse to a single legacy run
(e.g. "§cWarning…|destroyed…"), so splitting dropped the §c from the
second line and it rendered in default purple italic. Lore also got
Minecraft's default italic because the legacy String API does not
suppress it the way Adventure Components do.
Switch to displayName(Component)/lore(List<Component>), parse each
segment with Util.parseMiniMessageOrLegacy, suppress default italic,
and carry the active §color/§format codes across '|' splits so styles
do not get dropped on subsequent segments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require a re-run confirmation before /island donate hand destroys items,
fix tab completion to offer "hand" and the held stack size, route "help"
through the standard help handler, and format [points] placeholders via
the player's locale so large totals render with thousands separators.
Sync the new confirm-prompt key plus spacing and typo fixes across every
locale file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ity, locale spacing
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/0764e162-6b48-4cf7-b3e9-f344016416bd
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
Bumps BentoBox to 3.14.1-SNAPSHOT for the new Flag.Builder.minimumRank
API and uses it on BLOCK_DONATION so VISITOR/COOP/TRUSTED ranks can
never be selected as the donation rank — only MEMBER and above.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Extract [points] placeholder into a POINTS_PLACEHOLDER constant so
the literal is declared once instead of four times (S1192)
- Switch the GUI creation to the Component-based Bukkit.createInventory
overload so we are no longer calling the deprecated String variant
(S1874), and reuse removeDefaultItalic so the title matches the
styling rules used for item names
- Split onInventoryClick into small focused helpers
(handlePlayerInventoryClick, handleCancel, handleConfirm,
handleDonationSlotClick, isValidDonationItem,
distributeIntoDonationSlots). Drops cognitive complexity well below
the 15 threshold and fixes the brain-method warning (S3776, S6541)
- Rewrite the shift-click distribution loop as a while loop guarded by
amount > 0 and the two-branch splitWithStyleCarryover loop as an
if/else-if/else chain, so neither uses more than one break/continue
(S135)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require Member rank minimum on block donation flag
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ng, GUI-specific error message
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/753156c2-d054-4c6f-820a-48c0ffedbbbe
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
@tastybento
tastybento merged commit 23eec6c into developApr 12, 2026
1 of 2 checks passed
@sonarqubecloud

Copy link
Copy Markdown

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.

2 participants

@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

Master - #414

Merged
tastybento merged 21 commits into
developfrom
master
Apr 12, 2026
Merged

Master#414
tastybento merged 21 commits into
developfrom
master

Conversation

@tastybento

Copy link
Copy Markdown
Member

No description provided.

tastybentoand others added 21 commits April 2, 2025 09:25
…n plugins
Require BentoBox API 3.14.0 (addon.yml) and align the pom dependency with
the bentobox.version property so both stay in sync. All 17 locale files are
converted from legacy & color codes to MiniMessage tags now that the User
API supports them natively. Maven plugins are bumped to their latest stable
releases; the compiler plugin is forked to work around a plexus-compiler
in-process bug ("this.hashes is null") that otherwise breaks test-compile.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Players can permanently donate blocks to raise island level.
- /island donate: opens chest-style GUI to drag blocks in
- /island donate hand [amount]: quick donate from held item
- ISLAND_BLOCK_DONATION flag (default: owner, configurable to member)
- Donated points added to level calculation, persist across recalcs
- DONATED tab in island detail panel
- Donation audit log with timestamps and donor tracking
- Admin level report extended with donated blocks section
- Destructive action warnings on confirm button and GUI info
- Backwards compatible: null-safe fields for legacy island data
Adds the new donation feature strings (island.donate, ISLAND_BLOCK_DONATION
flag, donated tab button) to all non-English locales using English text as
placeholder for translators. Notes in CLAUDE.md that on-disk panel templates
are not overwritten on upgrade so release notes must call out panel changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The donation panel built items via Bukkit's deprecated setDisplayName/
setLore APIs and split the translated text on '|'. Two adjacent
MiniMessage spans of the same color collapse to a single legacy run
(e.g. "§cWarning…|destroyed…"), so splitting dropped the §c from the
second line and it rendered in default purple italic. Lore also got
Minecraft's default italic because the legacy String API does not
suppress it the way Adventure Components do.
Switch to displayName(Component)/lore(List<Component>), parse each
segment with Util.parseMiniMessageOrLegacy, suppress default italic,
and carry the active §color/§format codes across '|' splits so styles
do not get dropped on subsequent segments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require a re-run confirmation before /island donate hand destroys items,
fix tab completion to offer "hand" and the held stack size, route "help"
through the standard help handler, and format [points] placeholders via
the player's locale so large totals render with thousands separators.
Sync the new confirm-prompt key plus spacing and typo fixes across every
locale file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ity, locale spacing
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/0764e162-6b48-4cf7-b3e9-f344016416bd
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
Bumps BentoBox to 3.14.1-SNAPSHOT for the new Flag.Builder.minimumRank
API and uses it on BLOCK_DONATION so VISITOR/COOP/TRUSTED ranks can
never be selected as the donation rank — only MEMBER and above.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Extract [points] placeholder into a POINTS_PLACEHOLDER constant so
the literal is declared once instead of four times (S1192)
- Switch the GUI creation to the Component-based Bukkit.createInventory
overload so we are no longer calling the deprecated String variant
(S1874), and reuse removeDefaultItalic so the title matches the
styling rules used for item names
- Split onInventoryClick into small focused helpers
(handlePlayerInventoryClick, handleCancel, handleConfirm,
handleDonationSlotClick, isValidDonationItem,
distributeIntoDonationSlots). Drops cognitive complexity well below
the 15 threshold and fixes the brain-method warning (S3776, S6541)
- Rewrite the shift-click distribution loop as a while loop guarded by
amount > 0 and the two-branch splitWithStyleCarryover loop as an
if/else-if/else chain, so neither uses more than one break/continue
(S135)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require Member rank minimum on block donation flag
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ng, GUI-specific error message
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/753156c2-d054-4c6f-820a-48c0ffedbbbe
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
@tastybento
tastybento merged commit 23eec6c into developApr 12, 2026
1 of 2 checks passed
@sonarqubecloud

Copy link
Copy Markdown

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.

2 participants

@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

Master - #414

Merged
tastybento merged 21 commits into
developfrom
master
Apr 12, 2026
Merged

Master#414
tastybento merged 21 commits into
developfrom
master

Conversation

@tastybento

Copy link
Copy Markdown
Member

No description provided.

tastybentoand others added 21 commits April 2, 2025 09:25
…n plugins
Require BentoBox API 3.14.0 (addon.yml) and align the pom dependency with
the bentobox.version property so both stay in sync. All 17 locale files are
converted from legacy & color codes to MiniMessage tags now that the User
API supports them natively. Maven plugins are bumped to their latest stable
releases; the compiler plugin is forked to work around a plexus-compiler
in-process bug ("this.hashes is null") that otherwise breaks test-compile.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Players can permanently donate blocks to raise island level.
- /island donate: opens chest-style GUI to drag blocks in
- /island donate hand [amount]: quick donate from held item
- ISLAND_BLOCK_DONATION flag (default: owner, configurable to member)
- Donated points added to level calculation, persist across recalcs
- DONATED tab in island detail panel
- Donation audit log with timestamps and donor tracking
- Admin level report extended with donated blocks section
- Destructive action warnings on confirm button and GUI info
- Backwards compatible: null-safe fields for legacy island data
Adds the new donation feature strings (island.donate, ISLAND_BLOCK_DONATION
flag, donated tab button) to all non-English locales using English text as
placeholder for translators. Notes in CLAUDE.md that on-disk panel templates
are not overwritten on upgrade so release notes must call out panel changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The donation panel built items via Bukkit's deprecated setDisplayName/
setLore APIs and split the translated text on '|'. Two adjacent
MiniMessage spans of the same color collapse to a single legacy run
(e.g. "§cWarning…|destroyed…"), so splitting dropped the §c from the
second line and it rendered in default purple italic. Lore also got
Minecraft's default italic because the legacy String API does not
suppress it the way Adventure Components do.
Switch to displayName(Component)/lore(List<Component>), parse each
segment with Util.parseMiniMessageOrLegacy, suppress default italic,
and carry the active §color/§format codes across '|' splits so styles
do not get dropped on subsequent segments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require a re-run confirmation before /island donate hand destroys items,
fix tab completion to offer "hand" and the held stack size, route "help"
through the standard help handler, and format [points] placeholders via
the player's locale so large totals render with thousands separators.
Sync the new confirm-prompt key plus spacing and typo fixes across every
locale file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ity, locale spacing
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/0764e162-6b48-4cf7-b3e9-f344016416bd
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
Bumps BentoBox to 3.14.1-SNAPSHOT for the new Flag.Builder.minimumRank
API and uses it on BLOCK_DONATION so VISITOR/COOP/TRUSTED ranks can
never be selected as the donation rank — only MEMBER and above.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Extract [points] placeholder into a POINTS_PLACEHOLDER constant so
the literal is declared once instead of four times (S1192)
- Switch the GUI creation to the Component-based Bukkit.createInventory
overload so we are no longer calling the deprecated String variant
(S1874), and reuse removeDefaultItalic so the title matches the
styling rules used for item names
- Split onInventoryClick into small focused helpers
(handlePlayerInventoryClick, handleCancel, handleConfirm,
handleDonationSlotClick, isValidDonationItem,
distributeIntoDonationSlots). Drops cognitive complexity well below
the 15 threshold and fixes the brain-method warning (S3776, S6541)
- Rewrite the shift-click distribution loop as a while loop guarded by
amount > 0 and the two-branch splitWithStyleCarryover loop as an
if/else-if/else chain, so neither uses more than one break/continue
(S135)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require Member rank minimum on block donation flag
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ng, GUI-specific error message
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/753156c2-d054-4c6f-820a-48c0ffedbbbe
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
@tastybento
tastybento merged commit 23eec6c into developApr 12, 2026
1 of 2 checks passed
@sonarqubecloud

Copy link
Copy Markdown

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.

2 participants

@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

Master - #414

Merged
tastybento merged 21 commits into
developfrom
master
Apr 12, 2026
Merged

Master#414
tastybento merged 21 commits into
developfrom
master

Conversation

@tastybento

Copy link
Copy Markdown
Member

No description provided.

tastybentoand others added 21 commits April 2, 2025 09:25
…n plugins
Require BentoBox API 3.14.0 (addon.yml) and align the pom dependency with
the bentobox.version property so both stay in sync. All 17 locale files are
converted from legacy & color codes to MiniMessage tags now that the User
API supports them natively. Maven plugins are bumped to their latest stable
releases; the compiler plugin is forked to work around a plexus-compiler
in-process bug ("this.hashes is null") that otherwise breaks test-compile.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Players can permanently donate blocks to raise island level.
- /island donate: opens chest-style GUI to drag blocks in
- /island donate hand [amount]: quick donate from held item
- ISLAND_BLOCK_DONATION flag (default: owner, configurable to member)
- Donated points added to level calculation, persist across recalcs
- DONATED tab in island detail panel
- Donation audit log with timestamps and donor tracking
- Admin level report extended with donated blocks section
- Destructive action warnings on confirm button and GUI info
- Backwards compatible: null-safe fields for legacy island data
Adds the new donation feature strings (island.donate, ISLAND_BLOCK_DONATION
flag, donated tab button) to all non-English locales using English text as
placeholder for translators. Notes in CLAUDE.md that on-disk panel templates
are not overwritten on upgrade so release notes must call out panel changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The donation panel built items via Bukkit's deprecated setDisplayName/
setLore APIs and split the translated text on '|'. Two adjacent
MiniMessage spans of the same color collapse to a single legacy run
(e.g. "§cWarning…|destroyed…"), so splitting dropped the §c from the
second line and it rendered in default purple italic. Lore also got
Minecraft's default italic because the legacy String API does not
suppress it the way Adventure Components do.
Switch to displayName(Component)/lore(List<Component>), parse each
segment with Util.parseMiniMessageOrLegacy, suppress default italic,
and carry the active §color/§format codes across '|' splits so styles
do not get dropped on subsequent segments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require a re-run confirmation before /island donate hand destroys items,
fix tab completion to offer "hand" and the held stack size, route "help"
through the standard help handler, and format [points] placeholders via
the player's locale so large totals render with thousands separators.
Sync the new confirm-prompt key plus spacing and typo fixes across every
locale file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ity, locale spacing
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/0764e162-6b48-4cf7-b3e9-f344016416bd
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
Bumps BentoBox to 3.14.1-SNAPSHOT for the new Flag.Builder.minimumRank
API and uses it on BLOCK_DONATION so VISITOR/COOP/TRUSTED ranks can
never be selected as the donation rank — only MEMBER and above.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Extract [points] placeholder into a POINTS_PLACEHOLDER constant so
the literal is declared once instead of four times (S1192)
- Switch the GUI creation to the Component-based Bukkit.createInventory
overload so we are no longer calling the deprecated String variant
(S1874), and reuse removeDefaultItalic so the title matches the
styling rules used for item names
- Split onInventoryClick into small focused helpers
(handlePlayerInventoryClick, handleCancel, handleConfirm,
handleDonationSlotClick, isValidDonationItem,
distributeIntoDonationSlots). Drops cognitive complexity well below
the 15 threshold and fixes the brain-method warning (S3776, S6541)
- Rewrite the shift-click distribution loop as a while loop guarded by
amount > 0 and the two-branch splitWithStyleCarryover loop as an
if/else-if/else chain, so neither uses more than one break/continue
(S135)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require Member rank minimum on block donation flag
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ng, GUI-specific error message
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/753156c2-d054-4c6f-820a-48c0ffedbbbe
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
@tastybento
tastybento merged commit 23eec6c into developApr 12, 2026
1 of 2 checks passed
@sonarqubecloud

Copy link
Copy Markdown

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.

2 participants

@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

Master - #414

Merged
tastybento merged 21 commits into
developfrom
master
Apr 12, 2026
Merged

Master#414
tastybento merged 21 commits into
developfrom
master

Conversation

@tastybento

Copy link
Copy Markdown
Member

No description provided.

tastybentoand others added 21 commits April 2, 2025 09:25
…n plugins
Require BentoBox API 3.14.0 (addon.yml) and align the pom dependency with
the bentobox.version property so both stay in sync. All 17 locale files are
converted from legacy & color codes to MiniMessage tags now that the User
API supports them natively. Maven plugins are bumped to their latest stable
releases; the compiler plugin is forked to work around a plexus-compiler
in-process bug ("this.hashes is null") that otherwise breaks test-compile.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Players can permanently donate blocks to raise island level.
- /island donate: opens chest-style GUI to drag blocks in
- /island donate hand [amount]: quick donate from held item
- ISLAND_BLOCK_DONATION flag (default: owner, configurable to member)
- Donated points added to level calculation, persist across recalcs
- DONATED tab in island detail panel
- Donation audit log with timestamps and donor tracking
- Admin level report extended with donated blocks section
- Destructive action warnings on confirm button and GUI info
- Backwards compatible: null-safe fields for legacy island data
Adds the new donation feature strings (island.donate, ISLAND_BLOCK_DONATION
flag, donated tab button) to all non-English locales using English text as
placeholder for translators. Notes in CLAUDE.md that on-disk panel templates
are not overwritten on upgrade so release notes must call out panel changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The donation panel built items via Bukkit's deprecated setDisplayName/
setLore APIs and split the translated text on '|'. Two adjacent
MiniMessage spans of the same color collapse to a single legacy run
(e.g. "§cWarning…|destroyed…"), so splitting dropped the §c from the
second line and it rendered in default purple italic. Lore also got
Minecraft's default italic because the legacy String API does not
suppress it the way Adventure Components do.
Switch to displayName(Component)/lore(List<Component>), parse each
segment with Util.parseMiniMessageOrLegacy, suppress default italic,
and carry the active §color/§format codes across '|' splits so styles
do not get dropped on subsequent segments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require a re-run confirmation before /island donate hand destroys items,
fix tab completion to offer "hand" and the held stack size, route "help"
through the standard help handler, and format [points] placeholders via
the player's locale so large totals render with thousands separators.
Sync the new confirm-prompt key plus spacing and typo fixes across every
locale file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ity, locale spacing
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/0764e162-6b48-4cf7-b3e9-f344016416bd
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
Bumps BentoBox to 3.14.1-SNAPSHOT for the new Flag.Builder.minimumRank
API and uses it on BLOCK_DONATION so VISITOR/COOP/TRUSTED ranks can
never be selected as the donation rank — only MEMBER and above.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Extract [points] placeholder into a POINTS_PLACEHOLDER constant so
the literal is declared once instead of four times (S1192)
- Switch the GUI creation to the Component-based Bukkit.createInventory
overload so we are no longer calling the deprecated String variant
(S1874), and reuse removeDefaultItalic so the title matches the
styling rules used for item names
- Split onInventoryClick into small focused helpers
(handlePlayerInventoryClick, handleCancel, handleConfirm,
handleDonationSlotClick, isValidDonationItem,
distributeIntoDonationSlots). Drops cognitive complexity well below
the 15 threshold and fixes the brain-method warning (S3776, S6541)
- Rewrite the shift-click distribution loop as a while loop guarded by
amount > 0 and the two-branch splitWithStyleCarryover loop as an
if/else-if/else chain, so neither uses more than one break/continue
(S135)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require Member rank minimum on block donation flag
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ng, GUI-specific error message
Agent-Logs-Url: https://github.com/BentoBoxWorld/Level/sessions/753156c2-d054-4c6f-820a-48c0ffedbbbe
Co-authored-by: tastybento <4407265+tastybento@users.noreply.github.com>
@tastybento
tastybento merged commit 23eec6c into developApr 12, 2026
1 of 2 checks passed
@sonarqubecloud

Copy link
Copy Markdown

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.

2 participants

@tastybento