Repository files navigation

1MB-XRayHunter

1MB-XRayHunter is a standalone 1MoreBlock Paper plugin and CoreProtect add-on for reviewing suspicious mining patterns. It turns CoreProtect block-break history into ranked lookup reports, cached vein detail pages, and in-game teleport targets so staff can investigate potential X-ray abuse without digging through raw database data.

This repository is the technical source of truth for the plugin. Public-safe player and admin guides live under docs/, and the canonical published page is intended to be:

At A Glance

  • Main command: /xrayhunter
  • Public info entry point: /xrayhunter info
  • Paper server/API target: 26.2
  • Paper API compile version: 26.2.build.84-stable
  • Paper release channel: STABLE
  • Declared plugin API version: 26.2
  • Java target: 25
  • Required dependency: CoreProtect
  • Maintained CoreProtect target: 24.0-dev1 with API 12
  • Plugin data folder: plugins/1MB-XRayHunter/
  • Build output folder: build/libs/

Features

  • Suspicious-mining lookups across loaded worlds and CoreProtect database-only worlds
  • Explicit all-world archive scans for staff review sessions
  • Compact console reporting with a high-value-only mode enabled by default
  • Lazy player detail loading so large archive lookups do not keep every tracked event in memory
  • Cached vein detail pages and safe in-game teleport targets
  • Automatic filtering for invalid CoreProtect pseudo-users such as #piston
  • Operator-managed vetted-player exclusions through config and /xrayhunter debug whitelist ...
  • Startup self-check logging that reports build/runtime/CoreProtect status

Documentation

Commands

Primary commands:

  • /xrayhunter info
  • /xrayhunter help
  • /xrayhunter lookup [time|alltime] [world|allworlds] [-all]
  • /xrayhunter <time|alltime>
  • /xrayhunter detail <index|player> [page]
  • /xrayhunter teleport <index>
  • /xrayhunter debug
  • /xrayhunter debug help
  • /xrayhunter debug permissions
  • /xrayhunter debug commands
  • /xrayhunter debug config
  • /xrayhunter debug set <key> <value>
  • /xrayhunter debug whitelist <player|list|add|remove>
  • /xrayhunter reload

Aliases:

  • /xhunt
  • /xr

Permissions

The plugin declares four permission nodes, all defaulting to op:

  • xrayhunter.use
  • xrayhunter.admin
  • xhunt.use
  • xhunt.admin

See docs/permissions.md for the detailed matrix and inherited alias behavior.

Configuration Overview

config.yml currently covers:

  • startup self-check behavior
  • default lookup window
  • top result and detail page sizing
  • console all-world safety limits
  • compact high-value-only console mode
  • vetted-player exclusions
  • overworld and nether tracking lists

Important config notes:

  • command-driven config edits are currently limited to the scalar keys exposed by /xrayhunter debug set
  • whitelist management writes directly to filters.excluded-players
  • deepslate ore variants are tracked in lookup-material lists and normalized back into their base ore rows for summary display
  • raw_iron_block and raw_copper_block are tracked
  • raw_gold_block is intentionally not tracked

See docs/configuration.md for the full setting-by-setting reference.

Platform And Integrations

This branch targets Paper 26.2 build 84 stable and newer compatible 26.2 builds.

Build/runtime metadata:

  • compiled against Paper API 26.2.build.84-stable
  • declares plugin.yml api-version: '26.2'
  • targets Java 25

CoreProtect notes:

  • the maintained integration target is CoreProtect 24.0-dev1
  • the maintained API target is CoreProtect API 12
  • the startup guidance for this branch expects CoreProtect API 11 or 12
  • the runtime gate still accepts some older API values internally, but older CoreProtect versions are not the documented target for this maintained branch

This plugin does not currently register PlaceholderAPI placeholders.

Building

Build the plugin with Gradle:

JAVA_HOME=/path/to/jdk-25 ./gradlew build

Optional clean rebuild:

JAVA_HOME=/path/to/jdk-25 ./gradlew clean build

Artifact naming pattern:

build/libs/1MB-XRayHunter-v<plugin-version>-<build-number>-j25-26.2.jar

Build behavior:

  • each successful jar build increments version.properties
  • each successful jar build writes a new jar into build/libs/
  • older jars remain unless you run clean
  • the normal check/build lifecycle verifies generated metadata, docs release coordinates, jar naming, and Java 25 bytecode

The build prefers .gradle/compile-support/CoreProtect-24.0-dev1.jar. Its optional shared fallback uses the sibling ../servers directory; set CODEX_SHARED_SERVERS_ROOT to override that location.

Runtime smoke tests can select either maintained JDK without changing server scripts:

JAVA_BIN=/path/to/jdk-25/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground
JAVA_BIN=/path/to/jdk-26/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground

Installation

  1. Install CoreProtect on a Paper server.
  2. Start the server once so CoreProtect initializes.
  3. Stop the server cleanly.
  4. Copy the XRayHunter jar into plugins/.
  5. Start the server again.
  6. Confirm /xrayhunter info, /xrayhunter help, and /xrayhunter debug work.
  7. Review plugins/1MB-XRayHunter/config.yml.

Limitations And Operational Notes

  • teleport is in-game only.
  • detail depends on a recent lookup cache.
  • implicit console all-world lookups are capped by config for safety.
  • explicit allworlds scans are supported for large archive reviews.
  • compact console mode narrows both the displayed columns and the query scope unless -all is supplied.

Credits

  • Original XRayHunter author: R4zorax
  • 1MoreBlock maintenance, compatibility work, packaging, and documentation: mrfloris
  • Thanks to repository contributors and OpenAI for development assistance

About

1MB fork for CoreProtect 23.2+ XRay Hunter Plugin for Paper 1.21.8+

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} 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

Repository files navigation

1MB-XRayHunter

1MB-XRayHunter is a standalone 1MoreBlock Paper plugin and CoreProtect add-on for reviewing suspicious mining patterns. It turns CoreProtect block-break history into ranked lookup reports, cached vein detail pages, and in-game teleport targets so staff can investigate potential X-ray abuse without digging through raw database data.

This repository is the technical source of truth for the plugin. Public-safe player and admin guides live under docs/, and the canonical published page is intended to be:

At A Glance

  • Main command: /xrayhunter
  • Public info entry point: /xrayhunter info
  • Paper server/API target: 26.2
  • Paper API compile version: 26.2.build.84-stable
  • Paper release channel: STABLE
  • Declared plugin API version: 26.2
  • Java target: 25
  • Required dependency: CoreProtect
  • Maintained CoreProtect target: 24.0-dev1 with API 12
  • Plugin data folder: plugins/1MB-XRayHunter/
  • Build output folder: build/libs/

Features

  • Suspicious-mining lookups across loaded worlds and CoreProtect database-only worlds
  • Explicit all-world archive scans for staff review sessions
  • Compact console reporting with a high-value-only mode enabled by default
  • Lazy player detail loading so large archive lookups do not keep every tracked event in memory
  • Cached vein detail pages and safe in-game teleport targets
  • Automatic filtering for invalid CoreProtect pseudo-users such as #piston
  • Operator-managed vetted-player exclusions through config and /xrayhunter debug whitelist ...
  • Startup self-check logging that reports build/runtime/CoreProtect status

Documentation

Commands

Primary commands:

  • /xrayhunter info
  • /xrayhunter help
  • /xrayhunter lookup [time|alltime] [world|allworlds] [-all]
  • /xrayhunter <time|alltime>
  • /xrayhunter detail <index|player> [page]
  • /xrayhunter teleport <index>
  • /xrayhunter debug
  • /xrayhunter debug help
  • /xrayhunter debug permissions
  • /xrayhunter debug commands
  • /xrayhunter debug config
  • /xrayhunter debug set <key> <value>
  • /xrayhunter debug whitelist <player|list|add|remove>
  • /xrayhunter reload

Aliases:

  • /xhunt
  • /xr

Permissions

The plugin declares four permission nodes, all defaulting to op:

  • xrayhunter.use
  • xrayhunter.admin
  • xhunt.use
  • xhunt.admin

See docs/permissions.md for the detailed matrix and inherited alias behavior.

Configuration Overview

config.yml currently covers:

  • startup self-check behavior
  • default lookup window
  • top result and detail page sizing
  • console all-world safety limits
  • compact high-value-only console mode
  • vetted-player exclusions
  • overworld and nether tracking lists

Important config notes:

  • command-driven config edits are currently limited to the scalar keys exposed by /xrayhunter debug set
  • whitelist management writes directly to filters.excluded-players
  • deepslate ore variants are tracked in lookup-material lists and normalized back into their base ore rows for summary display
  • raw_iron_block and raw_copper_block are tracked
  • raw_gold_block is intentionally not tracked

See docs/configuration.md for the full setting-by-setting reference.

Platform And Integrations

This branch targets Paper 26.2 build 84 stable and newer compatible 26.2 builds.

Build/runtime metadata:

  • compiled against Paper API 26.2.build.84-stable
  • declares plugin.yml api-version: '26.2'
  • targets Java 25

CoreProtect notes:

  • the maintained integration target is CoreProtect 24.0-dev1
  • the maintained API target is CoreProtect API 12
  • the startup guidance for this branch expects CoreProtect API 11 or 12
  • the runtime gate still accepts some older API values internally, but older CoreProtect versions are not the documented target for this maintained branch

This plugin does not currently register PlaceholderAPI placeholders.

Building

Build the plugin with Gradle:

JAVA_HOME=/path/to/jdk-25 ./gradlew build

Optional clean rebuild:

JAVA_HOME=/path/to/jdk-25 ./gradlew clean build

Artifact naming pattern:

build/libs/1MB-XRayHunter-v<plugin-version>-<build-number>-j25-26.2.jar

Build behavior:

  • each successful jar build increments version.properties
  • each successful jar build writes a new jar into build/libs/
  • older jars remain unless you run clean
  • the normal check/build lifecycle verifies generated metadata, docs release coordinates, jar naming, and Java 25 bytecode

The build prefers .gradle/compile-support/CoreProtect-24.0-dev1.jar. Its optional shared fallback uses the sibling ../servers directory; set CODEX_SHARED_SERVERS_ROOT to override that location.

Runtime smoke tests can select either maintained JDK without changing server scripts:

JAVA_BIN=/path/to/jdk-25/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground
JAVA_BIN=/path/to/jdk-26/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground

Installation

  1. Install CoreProtect on a Paper server.
  2. Start the server once so CoreProtect initializes.
  3. Stop the server cleanly.
  4. Copy the XRayHunter jar into plugins/.
  5. Start the server again.
  6. Confirm /xrayhunter info, /xrayhunter help, and /xrayhunter debug work.
  7. Review plugins/1MB-XRayHunter/config.yml.

Limitations And Operational Notes

  • teleport is in-game only.
  • detail depends on a recent lookup cache.
  • implicit console all-world lookups are capped by config for safety.
  • explicit allworlds scans are supported for large archive reviews.
  • compact console mode narrows both the displayed columns and the query scope unless -all is supplied.

Credits

  • Original XRayHunter author: R4zorax
  • 1MoreBlock maintenance, compatibility work, packaging, and documentation: mrfloris
  • Thanks to repository contributors and OpenAI for development assistance

About

1MB fork for CoreProtect 23.2+ XRay Hunter Plugin for Paper 1.21.8+

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

1MB-XRayHunter

1MB-XRayHunter is a standalone 1MoreBlock Paper plugin and CoreProtect add-on for reviewing suspicious mining patterns. It turns CoreProtect block-break history into ranked lookup reports, cached vein detail pages, and in-game teleport targets so staff can investigate potential X-ray abuse without digging through raw database data.

This repository is the technical source of truth for the plugin. Public-safe player and admin guides live under docs/, and the canonical published page is intended to be:

At A Glance

  • Main command: /xrayhunter
  • Public info entry point: /xrayhunter info
  • Paper server/API target: 26.2
  • Paper API compile version: 26.2.build.84-stable
  • Paper release channel: STABLE
  • Declared plugin API version: 26.2
  • Java target: 25
  • Required dependency: CoreProtect
  • Maintained CoreProtect target: 24.0-dev1 with API 12
  • Plugin data folder: plugins/1MB-XRayHunter/
  • Build output folder: build/libs/

Features

  • Suspicious-mining lookups across loaded worlds and CoreProtect database-only worlds
  • Explicit all-world archive scans for staff review sessions
  • Compact console reporting with a high-value-only mode enabled by default
  • Lazy player detail loading so large archive lookups do not keep every tracked event in memory
  • Cached vein detail pages and safe in-game teleport targets
  • Automatic filtering for invalid CoreProtect pseudo-users such as #piston
  • Operator-managed vetted-player exclusions through config and /xrayhunter debug whitelist ...
  • Startup self-check logging that reports build/runtime/CoreProtect status

Documentation

Commands

Primary commands:

  • /xrayhunter info
  • /xrayhunter help
  • /xrayhunter lookup [time|alltime] [world|allworlds] [-all]
  • /xrayhunter <time|alltime>
  • /xrayhunter detail <index|player> [page]
  • /xrayhunter teleport <index>
  • /xrayhunter debug
  • /xrayhunter debug help
  • /xrayhunter debug permissions
  • /xrayhunter debug commands
  • /xrayhunter debug config
  • /xrayhunter debug set <key> <value>
  • /xrayhunter debug whitelist <player|list|add|remove>
  • /xrayhunter reload

Aliases:

  • /xhunt
  • /xr

Permissions

The plugin declares four permission nodes, all defaulting to op:

  • xrayhunter.use
  • xrayhunter.admin
  • xhunt.use
  • xhunt.admin

See docs/permissions.md for the detailed matrix and inherited alias behavior.

Configuration Overview

config.yml currently covers:

  • startup self-check behavior
  • default lookup window
  • top result and detail page sizing
  • console all-world safety limits
  • compact high-value-only console mode
  • vetted-player exclusions
  • overworld and nether tracking lists

Important config notes:

  • command-driven config edits are currently limited to the scalar keys exposed by /xrayhunter debug set
  • whitelist management writes directly to filters.excluded-players
  • deepslate ore variants are tracked in lookup-material lists and normalized back into their base ore rows for summary display
  • raw_iron_block and raw_copper_block are tracked
  • raw_gold_block is intentionally not tracked

See docs/configuration.md for the full setting-by-setting reference.

Platform And Integrations

This branch targets Paper 26.2 build 84 stable and newer compatible 26.2 builds.

Build/runtime metadata:

  • compiled against Paper API 26.2.build.84-stable
  • declares plugin.yml api-version: '26.2'
  • targets Java 25

CoreProtect notes:

  • the maintained integration target is CoreProtect 24.0-dev1
  • the maintained API target is CoreProtect API 12
  • the startup guidance for this branch expects CoreProtect API 11 or 12
  • the runtime gate still accepts some older API values internally, but older CoreProtect versions are not the documented target for this maintained branch

This plugin does not currently register PlaceholderAPI placeholders.

Building

Build the plugin with Gradle:

JAVA_HOME=/path/to/jdk-25 ./gradlew build

Optional clean rebuild:

JAVA_HOME=/path/to/jdk-25 ./gradlew clean build

Artifact naming pattern:

build/libs/1MB-XRayHunter-v<plugin-version>-<build-number>-j25-26.2.jar

Build behavior:

  • each successful jar build increments version.properties
  • each successful jar build writes a new jar into build/libs/
  • older jars remain unless you run clean
  • the normal check/build lifecycle verifies generated metadata, docs release coordinates, jar naming, and Java 25 bytecode

The build prefers .gradle/compile-support/CoreProtect-24.0-dev1.jar. Its optional shared fallback uses the sibling ../servers directory; set CODEX_SHARED_SERVERS_ROOT to override that location.

Runtime smoke tests can select either maintained JDK without changing server scripts:

JAVA_BIN=/path/to/jdk-25/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground
JAVA_BIN=/path/to/jdk-26/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground

Installation

  1. Install CoreProtect on a Paper server.
  2. Start the server once so CoreProtect initializes.
  3. Stop the server cleanly.
  4. Copy the XRayHunter jar into plugins/.
  5. Start the server again.
  6. Confirm /xrayhunter info, /xrayhunter help, and /xrayhunter debug work.
  7. Review plugins/1MB-XRayHunter/config.yml.

Limitations And Operational Notes

  • teleport is in-game only.
  • detail depends on a recent lookup cache.
  • implicit console all-world lookups are capped by config for safety.
  • explicit allworlds scans are supported for large archive reviews.
  • compact console mode narrows both the displayed columns and the query scope unless -all is supplied.

Credits

  • Original XRayHunter author: R4zorax
  • 1MoreBlock maintenance, compatibility work, packaging, and documentation: mrfloris
  • Thanks to repository contributors and OpenAI for development assistance

About

1MB fork for CoreProtect 23.2+ XRay Hunter Plugin for Paper 1.21.8+

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

1MB-XRayHunter

1MB-XRayHunter is a standalone 1MoreBlock Paper plugin and CoreProtect add-on for reviewing suspicious mining patterns. It turns CoreProtect block-break history into ranked lookup reports, cached vein detail pages, and in-game teleport targets so staff can investigate potential X-ray abuse without digging through raw database data.

This repository is the technical source of truth for the plugin. Public-safe player and admin guides live under docs/, and the canonical published page is intended to be:

At A Glance

  • Main command: /xrayhunter
  • Public info entry point: /xrayhunter info
  • Paper server/API target: 26.2
  • Paper API compile version: 26.2.build.84-stable
  • Paper release channel: STABLE
  • Declared plugin API version: 26.2
  • Java target: 25
  • Required dependency: CoreProtect
  • Maintained CoreProtect target: 24.0-dev1 with API 12
  • Plugin data folder: plugins/1MB-XRayHunter/
  • Build output folder: build/libs/

Features

  • Suspicious-mining lookups across loaded worlds and CoreProtect database-only worlds
  • Explicit all-world archive scans for staff review sessions
  • Compact console reporting with a high-value-only mode enabled by default
  • Lazy player detail loading so large archive lookups do not keep every tracked event in memory
  • Cached vein detail pages and safe in-game teleport targets
  • Automatic filtering for invalid CoreProtect pseudo-users such as #piston
  • Operator-managed vetted-player exclusions through config and /xrayhunter debug whitelist ...
  • Startup self-check logging that reports build/runtime/CoreProtect status

Documentation

Commands

Primary commands:

  • /xrayhunter info
  • /xrayhunter help
  • /xrayhunter lookup [time|alltime] [world|allworlds] [-all]
  • /xrayhunter <time|alltime>
  • /xrayhunter detail <index|player> [page]
  • /xrayhunter teleport <index>
  • /xrayhunter debug
  • /xrayhunter debug help
  • /xrayhunter debug permissions
  • /xrayhunter debug commands
  • /xrayhunter debug config
  • /xrayhunter debug set <key> <value>
  • /xrayhunter debug whitelist <player|list|add|remove>
  • /xrayhunter reload

Aliases:

  • /xhunt
  • /xr

Permissions

The plugin declares four permission nodes, all defaulting to op:

  • xrayhunter.use
  • xrayhunter.admin
  • xhunt.use
  • xhunt.admin

See docs/permissions.md for the detailed matrix and inherited alias behavior.

Configuration Overview

config.yml currently covers:

  • startup self-check behavior
  • default lookup window
  • top result and detail page sizing
  • console all-world safety limits
  • compact high-value-only console mode
  • vetted-player exclusions
  • overworld and nether tracking lists

Important config notes:

  • command-driven config edits are currently limited to the scalar keys exposed by /xrayhunter debug set
  • whitelist management writes directly to filters.excluded-players
  • deepslate ore variants are tracked in lookup-material lists and normalized back into their base ore rows for summary display
  • raw_iron_block and raw_copper_block are tracked
  • raw_gold_block is intentionally not tracked

See docs/configuration.md for the full setting-by-setting reference.

Platform And Integrations

This branch targets Paper 26.2 build 84 stable and newer compatible 26.2 builds.

Build/runtime metadata:

  • compiled against Paper API 26.2.build.84-stable
  • declares plugin.yml api-version: '26.2'
  • targets Java 25

CoreProtect notes:

  • the maintained integration target is CoreProtect 24.0-dev1
  • the maintained API target is CoreProtect API 12
  • the startup guidance for this branch expects CoreProtect API 11 or 12
  • the runtime gate still accepts some older API values internally, but older CoreProtect versions are not the documented target for this maintained branch

This plugin does not currently register PlaceholderAPI placeholders.

Building

Build the plugin with Gradle:

JAVA_HOME=/path/to/jdk-25 ./gradlew build

Optional clean rebuild:

JAVA_HOME=/path/to/jdk-25 ./gradlew clean build

Artifact naming pattern:

build/libs/1MB-XRayHunter-v<plugin-version>-<build-number>-j25-26.2.jar

Build behavior:

  • each successful jar build increments version.properties
  • each successful jar build writes a new jar into build/libs/
  • older jars remain unless you run clean
  • the normal check/build lifecycle verifies generated metadata, docs release coordinates, jar naming, and Java 25 bytecode

The build prefers .gradle/compile-support/CoreProtect-24.0-dev1.jar. Its optional shared fallback uses the sibling ../servers directory; set CODEX_SHARED_SERVERS_ROOT to override that location.

Runtime smoke tests can select either maintained JDK without changing server scripts:

JAVA_BIN=/path/to/jdk-25/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground
JAVA_BIN=/path/to/jdk-26/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground

Installation

  1. Install CoreProtect on a Paper server.
  2. Start the server once so CoreProtect initializes.
  3. Stop the server cleanly.
  4. Copy the XRayHunter jar into plugins/.
  5. Start the server again.
  6. Confirm /xrayhunter info, /xrayhunter help, and /xrayhunter debug work.
  7. Review plugins/1MB-XRayHunter/config.yml.

Limitations And Operational Notes

  • teleport is in-game only.
  • detail depends on a recent lookup cache.
  • implicit console all-world lookups are capped by config for safety.
  • explicit allworlds scans are supported for large archive reviews.
  • compact console mode narrows both the displayed columns and the query scope unless -all is supplied.

Credits

  • Original XRayHunter author: R4zorax
  • 1MoreBlock maintenance, compatibility work, packaging, and documentation: mrfloris
  • Thanks to repository contributors and OpenAI for development assistance

About

1MB fork for CoreProtect 23.2+ XRay Hunter Plugin for Paper 1.21.8+

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } 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

Repository files navigation

1MB-XRayHunter

1MB-XRayHunter is a standalone 1MoreBlock Paper plugin and CoreProtect add-on for reviewing suspicious mining patterns. It turns CoreProtect block-break history into ranked lookup reports, cached vein detail pages, and in-game teleport targets so staff can investigate potential X-ray abuse without digging through raw database data.

This repository is the technical source of truth for the plugin. Public-safe player and admin guides live under docs/, and the canonical published page is intended to be:

At A Glance

  • Main command: /xrayhunter
  • Public info entry point: /xrayhunter info
  • Paper server/API target: 26.2
  • Paper API compile version: 26.2.build.84-stable
  • Paper release channel: STABLE
  • Declared plugin API version: 26.2
  • Java target: 25
  • Required dependency: CoreProtect
  • Maintained CoreProtect target: 24.0-dev1 with API 12
  • Plugin data folder: plugins/1MB-XRayHunter/
  • Build output folder: build/libs/

Features

  • Suspicious-mining lookups across loaded worlds and CoreProtect database-only worlds
  • Explicit all-world archive scans for staff review sessions
  • Compact console reporting with a high-value-only mode enabled by default
  • Lazy player detail loading so large archive lookups do not keep every tracked event in memory
  • Cached vein detail pages and safe in-game teleport targets
  • Automatic filtering for invalid CoreProtect pseudo-users such as #piston
  • Operator-managed vetted-player exclusions through config and /xrayhunter debug whitelist ...
  • Startup self-check logging that reports build/runtime/CoreProtect status

Documentation

Commands

Primary commands:

  • /xrayhunter info
  • /xrayhunter help
  • /xrayhunter lookup [time|alltime] [world|allworlds] [-all]
  • /xrayhunter <time|alltime>
  • /xrayhunter detail <index|player> [page]
  • /xrayhunter teleport <index>
  • /xrayhunter debug
  • /xrayhunter debug help
  • /xrayhunter debug permissions
  • /xrayhunter debug commands
  • /xrayhunter debug config
  • /xrayhunter debug set <key> <value>
  • /xrayhunter debug whitelist <player|list|add|remove>
  • /xrayhunter reload

Aliases:

  • /xhunt
  • /xr

Permissions

The plugin declares four permission nodes, all defaulting to op:

  • xrayhunter.use
  • xrayhunter.admin
  • xhunt.use
  • xhunt.admin

See docs/permissions.md for the detailed matrix and inherited alias behavior.

Configuration Overview

config.yml currently covers:

  • startup self-check behavior
  • default lookup window
  • top result and detail page sizing
  • console all-world safety limits
  • compact high-value-only console mode
  • vetted-player exclusions
  • overworld and nether tracking lists

Important config notes:

  • command-driven config edits are currently limited to the scalar keys exposed by /xrayhunter debug set
  • whitelist management writes directly to filters.excluded-players
  • deepslate ore variants are tracked in lookup-material lists and normalized back into their base ore rows for summary display
  • raw_iron_block and raw_copper_block are tracked
  • raw_gold_block is intentionally not tracked

See docs/configuration.md for the full setting-by-setting reference.

Platform And Integrations

This branch targets Paper 26.2 build 84 stable and newer compatible 26.2 builds.

Build/runtime metadata:

  • compiled against Paper API 26.2.build.84-stable
  • declares plugin.yml api-version: '26.2'
  • targets Java 25

CoreProtect notes:

  • the maintained integration target is CoreProtect 24.0-dev1
  • the maintained API target is CoreProtect API 12
  • the startup guidance for this branch expects CoreProtect API 11 or 12
  • the runtime gate still accepts some older API values internally, but older CoreProtect versions are not the documented target for this maintained branch

This plugin does not currently register PlaceholderAPI placeholders.

Building

Build the plugin with Gradle:

JAVA_HOME=/path/to/jdk-25 ./gradlew build

Optional clean rebuild:

JAVA_HOME=/path/to/jdk-25 ./gradlew clean build

Artifact naming pattern:

build/libs/1MB-XRayHunter-v<plugin-version>-<build-number>-j25-26.2.jar

Build behavior:

  • each successful jar build increments version.properties
  • each successful jar build writes a new jar into build/libs/
  • older jars remain unless you run clean
  • the normal check/build lifecycle verifies generated metadata, docs release coordinates, jar naming, and Java 25 bytecode

The build prefers .gradle/compile-support/CoreProtect-24.0-dev1.jar. Its optional shared fallback uses the sibling ../servers directory; set CODEX_SHARED_SERVERS_ROOT to override that location.

Runtime smoke tests can select either maintained JDK without changing server scripts:

JAVA_BIN=/path/to/jdk-25/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground
JAVA_BIN=/path/to/jdk-26/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground

Installation

  1. Install CoreProtect on a Paper server.
  2. Start the server once so CoreProtect initializes.
  3. Stop the server cleanly.
  4. Copy the XRayHunter jar into plugins/.
  5. Start the server again.
  6. Confirm /xrayhunter info, /xrayhunter help, and /xrayhunter debug work.
  7. Review plugins/1MB-XRayHunter/config.yml.

Limitations And Operational Notes

  • teleport is in-game only.
  • detail depends on a recent lookup cache.
  • implicit console all-world lookups are capped by config for safety.
  • explicit allworlds scans are supported for large archive reviews.
  • compact console mode narrows both the displayed columns and the query scope unless -all is supplied.

Credits

  • Original XRayHunter author: R4zorax
  • 1MoreBlock maintenance, compatibility work, packaging, and documentation: mrfloris
  • Thanks to repository contributors and OpenAI for development assistance

About

1MB fork for CoreProtect 23.2+ XRay Hunter Plugin for Paper 1.21.8+

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

1MB-XRayHunter

1MB-XRayHunter is a standalone 1MoreBlock Paper plugin and CoreProtect add-on for reviewing suspicious mining patterns. It turns CoreProtect block-break history into ranked lookup reports, cached vein detail pages, and in-game teleport targets so staff can investigate potential X-ray abuse without digging through raw database data.

This repository is the technical source of truth for the plugin. Public-safe player and admin guides live under docs/, and the canonical published page is intended to be:

At A Glance

  • Main command: /xrayhunter
  • Public info entry point: /xrayhunter info
  • Paper server/API target: 26.2
  • Paper API compile version: 26.2.build.84-stable
  • Paper release channel: STABLE
  • Declared plugin API version: 26.2
  • Java target: 25
  • Required dependency: CoreProtect
  • Maintained CoreProtect target: 24.0-dev1 with API 12
  • Plugin data folder: plugins/1MB-XRayHunter/
  • Build output folder: build/libs/

Features

  • Suspicious-mining lookups across loaded worlds and CoreProtect database-only worlds
  • Explicit all-world archive scans for staff review sessions
  • Compact console reporting with a high-value-only mode enabled by default
  • Lazy player detail loading so large archive lookups do not keep every tracked event in memory
  • Cached vein detail pages and safe in-game teleport targets
  • Automatic filtering for invalid CoreProtect pseudo-users such as #piston
  • Operator-managed vetted-player exclusions through config and /xrayhunter debug whitelist ...
  • Startup self-check logging that reports build/runtime/CoreProtect status

Documentation

Commands

Primary commands:

  • /xrayhunter info
  • /xrayhunter help
  • /xrayhunter lookup [time|alltime] [world|allworlds] [-all]
  • /xrayhunter <time|alltime>
  • /xrayhunter detail <index|player> [page]
  • /xrayhunter teleport <index>
  • /xrayhunter debug
  • /xrayhunter debug help
  • /xrayhunter debug permissions
  • /xrayhunter debug commands
  • /xrayhunter debug config
  • /xrayhunter debug set <key> <value>
  • /xrayhunter debug whitelist <player|list|add|remove>
  • /xrayhunter reload

Aliases:

  • /xhunt
  • /xr

Permissions

The plugin declares four permission nodes, all defaulting to op:

  • xrayhunter.use
  • xrayhunter.admin
  • xhunt.use
  • xhunt.admin

See docs/permissions.md for the detailed matrix and inherited alias behavior.

Configuration Overview

config.yml currently covers:

  • startup self-check behavior
  • default lookup window
  • top result and detail page sizing
  • console all-world safety limits
  • compact high-value-only console mode
  • vetted-player exclusions
  • overworld and nether tracking lists

Important config notes:

  • command-driven config edits are currently limited to the scalar keys exposed by /xrayhunter debug set
  • whitelist management writes directly to filters.excluded-players
  • deepslate ore variants are tracked in lookup-material lists and normalized back into their base ore rows for summary display
  • raw_iron_block and raw_copper_block are tracked
  • raw_gold_block is intentionally not tracked

See docs/configuration.md for the full setting-by-setting reference.

Platform And Integrations

This branch targets Paper 26.2 build 84 stable and newer compatible 26.2 builds.

Build/runtime metadata:

  • compiled against Paper API 26.2.build.84-stable
  • declares plugin.yml api-version: '26.2'
  • targets Java 25

CoreProtect notes:

  • the maintained integration target is CoreProtect 24.0-dev1
  • the maintained API target is CoreProtect API 12
  • the startup guidance for this branch expects CoreProtect API 11 or 12
  • the runtime gate still accepts some older API values internally, but older CoreProtect versions are not the documented target for this maintained branch

This plugin does not currently register PlaceholderAPI placeholders.

Building

Build the plugin with Gradle:

JAVA_HOME=/path/to/jdk-25 ./gradlew build

Optional clean rebuild:

JAVA_HOME=/path/to/jdk-25 ./gradlew clean build

Artifact naming pattern:

build/libs/1MB-XRayHunter-v<plugin-version>-<build-number>-j25-26.2.jar

Build behavior:

  • each successful jar build increments version.properties
  • each successful jar build writes a new jar into build/libs/
  • older jars remain unless you run clean
  • the normal check/build lifecycle verifies generated metadata, docs release coordinates, jar naming, and Java 25 bytecode

The build prefers .gradle/compile-support/CoreProtect-24.0-dev1.jar. Its optional shared fallback uses the sibling ../servers directory; set CODEX_SHARED_SERVERS_ROOT to override that location.

Runtime smoke tests can select either maintained JDK without changing server scripts:

JAVA_BIN=/path/to/jdk-25/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground
JAVA_BIN=/path/to/jdk-26/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground

Installation

  1. Install CoreProtect on a Paper server.
  2. Start the server once so CoreProtect initializes.
  3. Stop the server cleanly.
  4. Copy the XRayHunter jar into plugins/.
  5. Start the server again.
  6. Confirm /xrayhunter info, /xrayhunter help, and /xrayhunter debug work.
  7. Review plugins/1MB-XRayHunter/config.yml.

Limitations And Operational Notes

  • teleport is in-game only.
  • detail depends on a recent lookup cache.
  • implicit console all-world lookups are capped by config for safety.
  • explicit allworlds scans are supported for large archive reviews.
  • compact console mode narrows both the displayed columns and the query scope unless -all is supplied.

Credits

  • Original XRayHunter author: R4zorax
  • 1MoreBlock maintenance, compatibility work, packaging, and documentation: mrfloris
  • Thanks to repository contributors and OpenAI for development assistance

About

1MB fork for CoreProtect 23.2+ XRay Hunter Plugin for Paper 1.21.8+

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

1MB-XRayHunter

1MB-XRayHunter is a standalone 1MoreBlock Paper plugin and CoreProtect add-on for reviewing suspicious mining patterns. It turns CoreProtect block-break history into ranked lookup reports, cached vein detail pages, and in-game teleport targets so staff can investigate potential X-ray abuse without digging through raw database data.

This repository is the technical source of truth for the plugin. Public-safe player and admin guides live under docs/, and the canonical published page is intended to be:

At A Glance

  • Main command: /xrayhunter
  • Public info entry point: /xrayhunter info
  • Paper server/API target: 26.2
  • Paper API compile version: 26.2.build.84-stable
  • Paper release channel: STABLE
  • Declared plugin API version: 26.2
  • Java target: 25
  • Required dependency: CoreProtect
  • Maintained CoreProtect target: 24.0-dev1 with API 12
  • Plugin data folder: plugins/1MB-XRayHunter/
  • Build output folder: build/libs/

Features

  • Suspicious-mining lookups across loaded worlds and CoreProtect database-only worlds
  • Explicit all-world archive scans for staff review sessions
  • Compact console reporting with a high-value-only mode enabled by default
  • Lazy player detail loading so large archive lookups do not keep every tracked event in memory
  • Cached vein detail pages and safe in-game teleport targets
  • Automatic filtering for invalid CoreProtect pseudo-users such as #piston
  • Operator-managed vetted-player exclusions through config and /xrayhunter debug whitelist ...
  • Startup self-check logging that reports build/runtime/CoreProtect status

Documentation

Commands

Primary commands:

  • /xrayhunter info
  • /xrayhunter help
  • /xrayhunter lookup [time|alltime] [world|allworlds] [-all]
  • /xrayhunter <time|alltime>
  • /xrayhunter detail <index|player> [page]
  • /xrayhunter teleport <index>
  • /xrayhunter debug
  • /xrayhunter debug help
  • /xrayhunter debug permissions
  • /xrayhunter debug commands
  • /xrayhunter debug config
  • /xrayhunter debug set <key> <value>
  • /xrayhunter debug whitelist <player|list|add|remove>
  • /xrayhunter reload

Aliases:

  • /xhunt
  • /xr

Permissions

The plugin declares four permission nodes, all defaulting to op:

  • xrayhunter.use
  • xrayhunter.admin
  • xhunt.use
  • xhunt.admin

See docs/permissions.md for the detailed matrix and inherited alias behavior.

Configuration Overview

config.yml currently covers:

  • startup self-check behavior
  • default lookup window
  • top result and detail page sizing
  • console all-world safety limits
  • compact high-value-only console mode
  • vetted-player exclusions
  • overworld and nether tracking lists

Important config notes:

  • command-driven config edits are currently limited to the scalar keys exposed by /xrayhunter debug set
  • whitelist management writes directly to filters.excluded-players
  • deepslate ore variants are tracked in lookup-material lists and normalized back into their base ore rows for summary display
  • raw_iron_block and raw_copper_block are tracked
  • raw_gold_block is intentionally not tracked

See docs/configuration.md for the full setting-by-setting reference.

Platform And Integrations

This branch targets Paper 26.2 build 84 stable and newer compatible 26.2 builds.

Build/runtime metadata:

  • compiled against Paper API 26.2.build.84-stable
  • declares plugin.yml api-version: '26.2'
  • targets Java 25

CoreProtect notes:

  • the maintained integration target is CoreProtect 24.0-dev1
  • the maintained API target is CoreProtect API 12
  • the startup guidance for this branch expects CoreProtect API 11 or 12
  • the runtime gate still accepts some older API values internally, but older CoreProtect versions are not the documented target for this maintained branch

This plugin does not currently register PlaceholderAPI placeholders.

Building

Build the plugin with Gradle:

JAVA_HOME=/path/to/jdk-25 ./gradlew build

Optional clean rebuild:

JAVA_HOME=/path/to/jdk-25 ./gradlew clean build

Artifact naming pattern:

build/libs/1MB-XRayHunter-v<plugin-version>-<build-number>-j25-26.2.jar

Build behavior:

  • each successful jar build increments version.properties
  • each successful jar build writes a new jar into build/libs/
  • older jars remain unless you run clean
  • the normal check/build lifecycle verifies generated metadata, docs release coordinates, jar naming, and Java 25 bytecode

The build prefers .gradle/compile-support/CoreProtect-24.0-dev1.jar. Its optional shared fallback uses the sibling ../servers directory; set CODEX_SHARED_SERVERS_ROOT to override that location.

Runtime smoke tests can select either maintained JDK without changing server scripts:

JAVA_BIN=/path/to/jdk-25/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground
JAVA_BIN=/path/to/jdk-26/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground

Installation

  1. Install CoreProtect on a Paper server.
  2. Start the server once so CoreProtect initializes.
  3. Stop the server cleanly.
  4. Copy the XRayHunter jar into plugins/.
  5. Start the server again.
  6. Confirm /xrayhunter info, /xrayhunter help, and /xrayhunter debug work.
  7. Review plugins/1MB-XRayHunter/config.yml.

Limitations And Operational Notes

  • teleport is in-game only.
  • detail depends on a recent lookup cache.
  • implicit console all-world lookups are capped by config for safety.
  • explicit allworlds scans are supported for large archive reviews.
  • compact console mode narrows both the displayed columns and the query scope unless -all is supplied.

Credits

  • Original XRayHunter author: R4zorax
  • 1MoreBlock maintenance, compatibility work, packaging, and documentation: mrfloris
  • Thanks to repository contributors and OpenAI for development assistance

About

1MB fork for CoreProtect 23.2+ XRay Hunter Plugin for Paper 1.21.8+

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

1MB-XRayHunter

1MB-XRayHunter is a standalone 1MoreBlock Paper plugin and CoreProtect add-on for reviewing suspicious mining patterns. It turns CoreProtect block-break history into ranked lookup reports, cached vein detail pages, and in-game teleport targets so staff can investigate potential X-ray abuse without digging through raw database data.

This repository is the technical source of truth for the plugin. Public-safe player and admin guides live under docs/, and the canonical published page is intended to be:

At A Glance

  • Main command: /xrayhunter
  • Public info entry point: /xrayhunter info
  • Paper server/API target: 26.2
  • Paper API compile version: 26.2.build.84-stable
  • Paper release channel: STABLE
  • Declared plugin API version: 26.2
  • Java target: 25
  • Required dependency: CoreProtect
  • Maintained CoreProtect target: 24.0-dev1 with API 12
  • Plugin data folder: plugins/1MB-XRayHunter/
  • Build output folder: build/libs/

Features

  • Suspicious-mining lookups across loaded worlds and CoreProtect database-only worlds
  • Explicit all-world archive scans for staff review sessions
  • Compact console reporting with a high-value-only mode enabled by default
  • Lazy player detail loading so large archive lookups do not keep every tracked event in memory
  • Cached vein detail pages and safe in-game teleport targets
  • Automatic filtering for invalid CoreProtect pseudo-users such as #piston
  • Operator-managed vetted-player exclusions through config and /xrayhunter debug whitelist ...
  • Startup self-check logging that reports build/runtime/CoreProtect status

Documentation

Commands

Primary commands:

  • /xrayhunter info
  • /xrayhunter help
  • /xrayhunter lookup [time|alltime] [world|allworlds] [-all]
  • /xrayhunter <time|alltime>
  • /xrayhunter detail <index|player> [page]
  • /xrayhunter teleport <index>
  • /xrayhunter debug
  • /xrayhunter debug help
  • /xrayhunter debug permissions
  • /xrayhunter debug commands
  • /xrayhunter debug config
  • /xrayhunter debug set <key> <value>
  • /xrayhunter debug whitelist <player|list|add|remove>
  • /xrayhunter reload

Aliases:

  • /xhunt
  • /xr

Permissions

The plugin declares four permission nodes, all defaulting to op:

  • xrayhunter.use
  • xrayhunter.admin
  • xhunt.use
  • xhunt.admin

See docs/permissions.md for the detailed matrix and inherited alias behavior.

Configuration Overview

config.yml currently covers:

  • startup self-check behavior
  • default lookup window
  • top result and detail page sizing
  • console all-world safety limits
  • compact high-value-only console mode
  • vetted-player exclusions
  • overworld and nether tracking lists

Important config notes:

  • command-driven config edits are currently limited to the scalar keys exposed by /xrayhunter debug set
  • whitelist management writes directly to filters.excluded-players
  • deepslate ore variants are tracked in lookup-material lists and normalized back into their base ore rows for summary display
  • raw_iron_block and raw_copper_block are tracked
  • raw_gold_block is intentionally not tracked

See docs/configuration.md for the full setting-by-setting reference.

Platform And Integrations

This branch targets Paper 26.2 build 84 stable and newer compatible 26.2 builds.

Build/runtime metadata:

  • compiled against Paper API 26.2.build.84-stable
  • declares plugin.yml api-version: '26.2'
  • targets Java 25

CoreProtect notes:

  • the maintained integration target is CoreProtect 24.0-dev1
  • the maintained API target is CoreProtect API 12
  • the startup guidance for this branch expects CoreProtect API 11 or 12
  • the runtime gate still accepts some older API values internally, but older CoreProtect versions are not the documented target for this maintained branch

This plugin does not currently register PlaceholderAPI placeholders.

Building

Build the plugin with Gradle:

JAVA_HOME=/path/to/jdk-25 ./gradlew build

Optional clean rebuild:

JAVA_HOME=/path/to/jdk-25 ./gradlew clean build

Artifact naming pattern:

build/libs/1MB-XRayHunter-v<plugin-version>-<build-number>-j25-26.2.jar

Build behavior:

  • each successful jar build increments version.properties
  • each successful jar build writes a new jar into build/libs/
  • older jars remain unless you run clean
  • the normal check/build lifecycle verifies generated metadata, docs release coordinates, jar naming, and Java 25 bytecode

The build prefers .gradle/compile-support/CoreProtect-24.0-dev1.jar. Its optional shared fallback uses the sibling ../servers directory; set CODEX_SHARED_SERVERS_ROOT to override that location.

Runtime smoke tests can select either maintained JDK without changing server scripts:

JAVA_BIN=/path/to/jdk-25/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground
JAVA_BIN=/path/to/jdk-26/bin/java /path/to/run-test-server --paper 26.2 --plugin build/libs/<jar>.jar --foreground

Installation

  1. Install CoreProtect on a Paper server.
  2. Start the server once so CoreProtect initializes.
  3. Stop the server cleanly.
  4. Copy the XRayHunter jar into plugins/.
  5. Start the server again.
  6. Confirm /xrayhunter info, /xrayhunter help, and /xrayhunter debug work.
  7. Review plugins/1MB-XRayHunter/config.yml.

Limitations And Operational Notes

  • teleport is in-game only.
  • detail depends on a recent lookup cache.
  • implicit console all-world lookups are capped by config for safety.
  • explicit allworlds scans are supported for large archive reviews.
  • compact console mode narrows both the displayed columns and the query scope unless -all is supplied.

Credits

  • Original XRayHunter author: R4zorax
  • 1MoreBlock maintenance, compatibility work, packaging, and documentation: mrfloris
  • Thanks to repository contributors and OpenAI for development assistance

About

1MB fork for CoreProtect 23.2+ XRay Hunter Plugin for Paper 1.21.8+

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages