Repository files navigation

1MB XRayHeuristics

1MB XRayHeuristics is a standalone 1MoreBlock heuristic Anti-XRay plugin for Paper. It integrates with CoreProtect and focuses on suspicious mining patterns, live suspicion sessions, and staff handling workflows instead of lookup-report style commands. The internal plugin id is xrayheuristics, and the canonical root command is /xrayer.

Technical Overview

  • Player-facing name: 1MB XRayHeuristics
  • Internal plugin name: xrayheuristics
  • Main command: /xrayer
  • Current release: 2.0.1-029-j25-26.2
  • Semantic version: 2.0.1
  • Build number: 029
  • Build target: Java 25
  • Release build JDK: Oracle JDK 25.0.4
  • Runtime verification JDKs: Oracle JDK 25.0.4 and 26.0.2
  • Paper compile target: 26.2.build.84-stable
  • Declared plugin.yml api-version floor: 1.21.11
  • CoreProtect compile target: 24.0-dev1 with API 12
  • Minimum CoreProtect API accepted at runtime: 11
  • Release artifact: build/libs/1MB-XRayHeuristics-v2.0.1-029-j25-26.2.jar
  • Plugin data directory: plugins/1MB-XRayHeuristics/
  • Persistent storage backends: JSON or MYSQL
  • Maintained Java namespace: com.onemoreblock.coreprotectaddons.xrayheuristics
  • Runtime boundary: reusable XRayHeuristicsModule plus a standalone XRayHeuristicsPlugin adapter

Documentation

Commands

CommandPurposeNotes
/xrayer infoPublic introduction, quick start, and docs link.No permission check in the current implementation.
/xrayer helpCommand summary and plugin overview.Also available from /xrayer with no arguments.
/xrayer suspicion [player]Show the current live suspicion value.Requires xrayheuristics.use or the legacy suspicion node.
/xrayer debugShow build, server, config, storage, and CoreProtect hook status.Admin-level command.
/xrayer debug helpShow available debug pages.Admin-level command.
/xrayer debug permissionsShow permission nodes and defaults.Admin-level command.
/xrayer debug commandsShow command syntax and usage notes.Admin-level command.
/xrayer debug configShow the supported live config values.Admin-level command.
/xrayer debug set <key> <value>Save a supported config key and reload plugin state.Admin-level command.
/xrayer reloadReload config.yml, locale.yml, and weights.yml.Admin-level command.
/xrayer resetsuspicion [player]Clear an in-memory suspicion session.Admin-level command.
/xrayer <player>Manually handle a player as an xrayer.Admin-level command.
/xrayer vaultOpen the handled-player vault GUI.Player-only, admin-level command.
/xrayer absolve <player>Return stored items and remove a vault entry.The target must be online.
/xrayer purge <player>Remove a vault entry without returning items.Command path only works for online targets.

Single-letter aliases are available for several subcommands: x, v, r, rs, s, a, and p. The explicit /xrayer xrayer <player> form also works, and /xrayer xrayer without a player only creates a dummy entry when AddRandomDummyXrayerIfNoXrayerCommandParameters is enabled.

Permissions

PermissionDefaultEffective use
xrayheuristics.useopRequired for /xrayer suspicion [player].
xrayheuristics.adminopRequired for debug, reload, resets, manual handling, vault, absolve, purge, and the dummy-entry helper.
xrayheuristics.notifyopReceives automatic handled-player warning messages.
xrayheuristics.ignorefalseExempts a player from heuristic tracking.

Legacy nodes are still accepted for compatibility: AXH.Commands.*, AXH.Vault.Purge, AXH.XrayerWarning, and AXH.Ignore.

Implementation note: the current code does not enforce a permission check for /xrayer, /xrayer help, or /xrayer info, even though older documentation historically grouped help together with xrayheuristics.use.

Placeholders

The plugin does not register PlaceholderAPI expansions. The verified placeholders are internal placeholders used in config-driven commands and GUI/locale text:

  • {PlayerName}
  • {TimesDetected}
  • {HandledTimesAmount}
  • {FirstTimeDetected}
  • {LastSeenTime}

See docs/placeholders.md for exact usage.

Configuration and Data

config.yml is the active runtime configuration file. It is loaded and saved through Paper/Bukkit's comment-aware YamlConfiguration API with comment parsing enabled, and admin-edited values are preserved when defaults are synchronized back in.

Other generated files:

  • locale.yml: generated language and GUI text values
  • weights.yml: generated per-world weight-card data retained for compatibility
  • data.json: the default JSON storage file when StorageType is JSON

Important runtime note: the current heuristic calculator reads its live suspicion weights from the top-level keys in config.yml. weights.yml is generated and reloaded, but it is not the active source for the main suspicion-weight checks in the current code.

Architecture and Future Consolidation

The current jar remains a standalone plugin, but its maintained implementation is organized as an extractable X-ray Heuristics feature. XRayHeuristicsPlugin owns the standalone Paper lifecycle and compatibility paths; XRayHeuristicsModule owns feature state, listeners, CoreProtect access, commands, config, and handled-player persistence.

This boundary is intended for the planned unified CoreProtect Add-ons plugin. The future host can instantiate the module with a shared JavaPlugin, an explicit feature data directory, and a shared CoreProtect hook. Existing server-facing identifiers and data formats remain unchanged in this release. See docs/architecture.md for the embedding contract and migration constraints.

Ore Coverage

The runtime logic currently tracks these ore families:

  • Coal: COAL_ORE, DEEPSLATE_COAL_ORE
  • Iron: IRON_ORE, DEEPSLATE_IRON_ORE, RAW_IRON_BLOCK
  • Copper: COPPER_ORE, DEEPSLATE_COPPER_ORE, RAW_COPPER_BLOCK
  • Gold: GOLD_ORE, DEEPSLATE_GOLD_ORE
  • Redstone: REDSTONE_ORE, DEEPSLATE_REDSTONE_ORE
  • Emerald: EMERALD_ORE, DEEPSLATE_EMERALD_ORE
  • Lapis: LAPIS_ORE, DEEPSLATE_LAPIS_ORE
  • Diamond: DIAMOND_ORE, DEEPSLATE_DIAMOND_ORE
  • Nether gold family: NETHER_GOLD_ORE, GILDED_BLACKSTONE
  • Nether quartz: NETHER_QUARTZ_ORE
  • Ancient debris: ANCIENT_DEBRIS

RAW_GOLD_BLOCK is intentionally not tracked.

Build

Build with Gradle using the required Java 25.0.4 JDK:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-25.0.4.jdk/Contents/Home \
gradle clean build printBuildConfig --warning-mode all

Release metadata is centralized in version.properties. Update the semantic version and build number there exactly once for a release; repeated build and verification runs then reproduce the same artifact version instead of silently incrementing it.

gradle check includes verifyReleaseMetadata, which checks the packaged plugin.yml, generated xrayheuristics/build-info.properties, README, installation/integration docs, and public-docs manifest for stale version, build, Java, Paper API, and channel metadata.

Official references used for the target are the Paper project setup guide and Paper 26.2 API Javadocs.

Installation Summary

  1. Install Paper with Java 25.
  2. Install CoreProtect before this plugin.
  3. Place the built jar in your server's plugins/ folder.
  4. Start the server so plugins/1MB-XRayHeuristics/ and its generated files are created.
  5. Verify the load with version xrayheuristics, /xrayer info, and /xrayer debug.

Detailed steps are in docs/installation.md.

Integrations

  • Required runtime dependency: CoreProtect
  • Optional storage integration: MySQL
  • No verified PlaceholderAPI expansion registration
  • No required dependency on CMI, LuckPerms, Vault, or PlaceholderAPI for the core plugin behavior

See docs/integrations.md for details.

Credits

  • Original plugin authors: __Mithrandir__ and Greymagic27
  • 1MoreBlock maintenance, packaging, compatibility work, and testing: mrfloris
  • Thanks to everyone who contributed testing and follow-up fixes across the 1MoreBlock Anti-XRay plugin line

About

Fork (tnx greymagic27) for 1MoreBlock.com Paper 1.21.8 / Java 21+ - Detects and punishes xrayers in mining situations.

Resources

Stars

1 star

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 XRayHeuristics

1MB XRayHeuristics is a standalone 1MoreBlock heuristic Anti-XRay plugin for Paper. It integrates with CoreProtect and focuses on suspicious mining patterns, live suspicion sessions, and staff handling workflows instead of lookup-report style commands. The internal plugin id is xrayheuristics, and the canonical root command is /xrayer.

Technical Overview

  • Player-facing name: 1MB XRayHeuristics
  • Internal plugin name: xrayheuristics
  • Main command: /xrayer
  • Current release: 2.0.1-029-j25-26.2
  • Semantic version: 2.0.1
  • Build number: 029
  • Build target: Java 25
  • Release build JDK: Oracle JDK 25.0.4
  • Runtime verification JDKs: Oracle JDK 25.0.4 and 26.0.2
  • Paper compile target: 26.2.build.84-stable
  • Declared plugin.yml api-version floor: 1.21.11
  • CoreProtect compile target: 24.0-dev1 with API 12
  • Minimum CoreProtect API accepted at runtime: 11
  • Release artifact: build/libs/1MB-XRayHeuristics-v2.0.1-029-j25-26.2.jar
  • Plugin data directory: plugins/1MB-XRayHeuristics/
  • Persistent storage backends: JSON or MYSQL
  • Maintained Java namespace: com.onemoreblock.coreprotectaddons.xrayheuristics
  • Runtime boundary: reusable XRayHeuristicsModule plus a standalone XRayHeuristicsPlugin adapter

Documentation

Commands

CommandPurposeNotes
/xrayer infoPublic introduction, quick start, and docs link.No permission check in the current implementation.
/xrayer helpCommand summary and plugin overview.Also available from /xrayer with no arguments.
/xrayer suspicion [player]Show the current live suspicion value.Requires xrayheuristics.use or the legacy suspicion node.
/xrayer debugShow build, server, config, storage, and CoreProtect hook status.Admin-level command.
/xrayer debug helpShow available debug pages.Admin-level command.
/xrayer debug permissionsShow permission nodes and defaults.Admin-level command.
/xrayer debug commandsShow command syntax and usage notes.Admin-level command.
/xrayer debug configShow the supported live config values.Admin-level command.
/xrayer debug set <key> <value>Save a supported config key and reload plugin state.Admin-level command.
/xrayer reloadReload config.yml, locale.yml, and weights.yml.Admin-level command.
/xrayer resetsuspicion [player]Clear an in-memory suspicion session.Admin-level command.
/xrayer <player>Manually handle a player as an xrayer.Admin-level command.
/xrayer vaultOpen the handled-player vault GUI.Player-only, admin-level command.
/xrayer absolve <player>Return stored items and remove a vault entry.The target must be online.
/xrayer purge <player>Remove a vault entry without returning items.Command path only works for online targets.

Single-letter aliases are available for several subcommands: x, v, r, rs, s, a, and p. The explicit /xrayer xrayer <player> form also works, and /xrayer xrayer without a player only creates a dummy entry when AddRandomDummyXrayerIfNoXrayerCommandParameters is enabled.

Permissions

PermissionDefaultEffective use
xrayheuristics.useopRequired for /xrayer suspicion [player].
xrayheuristics.adminopRequired for debug, reload, resets, manual handling, vault, absolve, purge, and the dummy-entry helper.
xrayheuristics.notifyopReceives automatic handled-player warning messages.
xrayheuristics.ignorefalseExempts a player from heuristic tracking.

Legacy nodes are still accepted for compatibility: AXH.Commands.*, AXH.Vault.Purge, AXH.XrayerWarning, and AXH.Ignore.

Implementation note: the current code does not enforce a permission check for /xrayer, /xrayer help, or /xrayer info, even though older documentation historically grouped help together with xrayheuristics.use.

Placeholders

The plugin does not register PlaceholderAPI expansions. The verified placeholders are internal placeholders used in config-driven commands and GUI/locale text:

  • {PlayerName}
  • {TimesDetected}
  • {HandledTimesAmount}
  • {FirstTimeDetected}
  • {LastSeenTime}

See docs/placeholders.md for exact usage.

Configuration and Data

config.yml is the active runtime configuration file. It is loaded and saved through Paper/Bukkit's comment-aware YamlConfiguration API with comment parsing enabled, and admin-edited values are preserved when defaults are synchronized back in.

Other generated files:

  • locale.yml: generated language and GUI text values
  • weights.yml: generated per-world weight-card data retained for compatibility
  • data.json: the default JSON storage file when StorageType is JSON

Important runtime note: the current heuristic calculator reads its live suspicion weights from the top-level keys in config.yml. weights.yml is generated and reloaded, but it is not the active source for the main suspicion-weight checks in the current code.

Architecture and Future Consolidation

The current jar remains a standalone plugin, but its maintained implementation is organized as an extractable X-ray Heuristics feature. XRayHeuristicsPlugin owns the standalone Paper lifecycle and compatibility paths; XRayHeuristicsModule owns feature state, listeners, CoreProtect access, commands, config, and handled-player persistence.

This boundary is intended for the planned unified CoreProtect Add-ons plugin. The future host can instantiate the module with a shared JavaPlugin, an explicit feature data directory, and a shared CoreProtect hook. Existing server-facing identifiers and data formats remain unchanged in this release. See docs/architecture.md for the embedding contract and migration constraints.

Ore Coverage

The runtime logic currently tracks these ore families:

  • Coal: COAL_ORE, DEEPSLATE_COAL_ORE
  • Iron: IRON_ORE, DEEPSLATE_IRON_ORE, RAW_IRON_BLOCK
  • Copper: COPPER_ORE, DEEPSLATE_COPPER_ORE, RAW_COPPER_BLOCK
  • Gold: GOLD_ORE, DEEPSLATE_GOLD_ORE
  • Redstone: REDSTONE_ORE, DEEPSLATE_REDSTONE_ORE
  • Emerald: EMERALD_ORE, DEEPSLATE_EMERALD_ORE
  • Lapis: LAPIS_ORE, DEEPSLATE_LAPIS_ORE
  • Diamond: DIAMOND_ORE, DEEPSLATE_DIAMOND_ORE
  • Nether gold family: NETHER_GOLD_ORE, GILDED_BLACKSTONE
  • Nether quartz: NETHER_QUARTZ_ORE
  • Ancient debris: ANCIENT_DEBRIS

RAW_GOLD_BLOCK is intentionally not tracked.

Build

Build with Gradle using the required Java 25.0.4 JDK:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-25.0.4.jdk/Contents/Home \
gradle clean build printBuildConfig --warning-mode all

Release metadata is centralized in version.properties. Update the semantic version and build number there exactly once for a release; repeated build and verification runs then reproduce the same artifact version instead of silently incrementing it.

gradle check includes verifyReleaseMetadata, which checks the packaged plugin.yml, generated xrayheuristics/build-info.properties, README, installation/integration docs, and public-docs manifest for stale version, build, Java, Paper API, and channel metadata.

Official references used for the target are the Paper project setup guide and Paper 26.2 API Javadocs.

Installation Summary

  1. Install Paper with Java 25.
  2. Install CoreProtect before this plugin.
  3. Place the built jar in your server's plugins/ folder.
  4. Start the server so plugins/1MB-XRayHeuristics/ and its generated files are created.
  5. Verify the load with version xrayheuristics, /xrayer info, and /xrayer debug.

Detailed steps are in docs/installation.md.

Integrations

  • Required runtime dependency: CoreProtect
  • Optional storage integration: MySQL
  • No verified PlaceholderAPI expansion registration
  • No required dependency on CMI, LuckPerms, Vault, or PlaceholderAPI for the core plugin behavior

See docs/integrations.md for details.

Credits

  • Original plugin authors: __Mithrandir__ and Greymagic27
  • 1MoreBlock maintenance, packaging, compatibility work, and testing: mrfloris
  • Thanks to everyone who contributed testing and follow-up fixes across the 1MoreBlock Anti-XRay plugin line

About

Fork (tnx greymagic27) for 1MoreBlock.com Paper 1.21.8 / Java 21+ - Detects and punishes xrayers in mining situations.

Resources

Stars

1 star

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 XRayHeuristics

1MB XRayHeuristics is a standalone 1MoreBlock heuristic Anti-XRay plugin for Paper. It integrates with CoreProtect and focuses on suspicious mining patterns, live suspicion sessions, and staff handling workflows instead of lookup-report style commands. The internal plugin id is xrayheuristics, and the canonical root command is /xrayer.

Technical Overview

  • Player-facing name: 1MB XRayHeuristics
  • Internal plugin name: xrayheuristics
  • Main command: /xrayer
  • Current release: 2.0.1-029-j25-26.2
  • Semantic version: 2.0.1
  • Build number: 029
  • Build target: Java 25
  • Release build JDK: Oracle JDK 25.0.4
  • Runtime verification JDKs: Oracle JDK 25.0.4 and 26.0.2
  • Paper compile target: 26.2.build.84-stable
  • Declared plugin.yml api-version floor: 1.21.11
  • CoreProtect compile target: 24.0-dev1 with API 12
  • Minimum CoreProtect API accepted at runtime: 11
  • Release artifact: build/libs/1MB-XRayHeuristics-v2.0.1-029-j25-26.2.jar
  • Plugin data directory: plugins/1MB-XRayHeuristics/
  • Persistent storage backends: JSON or MYSQL
  • Maintained Java namespace: com.onemoreblock.coreprotectaddons.xrayheuristics
  • Runtime boundary: reusable XRayHeuristicsModule plus a standalone XRayHeuristicsPlugin adapter

Documentation

Commands

CommandPurposeNotes
/xrayer infoPublic introduction, quick start, and docs link.No permission check in the current implementation.
/xrayer helpCommand summary and plugin overview.Also available from /xrayer with no arguments.
/xrayer suspicion [player]Show the current live suspicion value.Requires xrayheuristics.use or the legacy suspicion node.
/xrayer debugShow build, server, config, storage, and CoreProtect hook status.Admin-level command.
/xrayer debug helpShow available debug pages.Admin-level command.
/xrayer debug permissionsShow permission nodes and defaults.Admin-level command.
/xrayer debug commandsShow command syntax and usage notes.Admin-level command.
/xrayer debug configShow the supported live config values.Admin-level command.
/xrayer debug set <key> <value>Save a supported config key and reload plugin state.Admin-level command.
/xrayer reloadReload config.yml, locale.yml, and weights.yml.Admin-level command.
/xrayer resetsuspicion [player]Clear an in-memory suspicion session.Admin-level command.
/xrayer <player>Manually handle a player as an xrayer.Admin-level command.
/xrayer vaultOpen the handled-player vault GUI.Player-only, admin-level command.
/xrayer absolve <player>Return stored items and remove a vault entry.The target must be online.
/xrayer purge <player>Remove a vault entry without returning items.Command path only works for online targets.

Single-letter aliases are available for several subcommands: x, v, r, rs, s, a, and p. The explicit /xrayer xrayer <player> form also works, and /xrayer xrayer without a player only creates a dummy entry when AddRandomDummyXrayerIfNoXrayerCommandParameters is enabled.

Permissions

PermissionDefaultEffective use
xrayheuristics.useopRequired for /xrayer suspicion [player].
xrayheuristics.adminopRequired for debug, reload, resets, manual handling, vault, absolve, purge, and the dummy-entry helper.
xrayheuristics.notifyopReceives automatic handled-player warning messages.
xrayheuristics.ignorefalseExempts a player from heuristic tracking.

Legacy nodes are still accepted for compatibility: AXH.Commands.*, AXH.Vault.Purge, AXH.XrayerWarning, and AXH.Ignore.

Implementation note: the current code does not enforce a permission check for /xrayer, /xrayer help, or /xrayer info, even though older documentation historically grouped help together with xrayheuristics.use.

Placeholders

The plugin does not register PlaceholderAPI expansions. The verified placeholders are internal placeholders used in config-driven commands and GUI/locale text:

  • {PlayerName}
  • {TimesDetected}
  • {HandledTimesAmount}
  • {FirstTimeDetected}
  • {LastSeenTime}

See docs/placeholders.md for exact usage.

Configuration and Data

config.yml is the active runtime configuration file. It is loaded and saved through Paper/Bukkit's comment-aware YamlConfiguration API with comment parsing enabled, and admin-edited values are preserved when defaults are synchronized back in.

Other generated files:

  • locale.yml: generated language and GUI text values
  • weights.yml: generated per-world weight-card data retained for compatibility
  • data.json: the default JSON storage file when StorageType is JSON

Important runtime note: the current heuristic calculator reads its live suspicion weights from the top-level keys in config.yml. weights.yml is generated and reloaded, but it is not the active source for the main suspicion-weight checks in the current code.

Architecture and Future Consolidation

The current jar remains a standalone plugin, but its maintained implementation is organized as an extractable X-ray Heuristics feature. XRayHeuristicsPlugin owns the standalone Paper lifecycle and compatibility paths; XRayHeuristicsModule owns feature state, listeners, CoreProtect access, commands, config, and handled-player persistence.

This boundary is intended for the planned unified CoreProtect Add-ons plugin. The future host can instantiate the module with a shared JavaPlugin, an explicit feature data directory, and a shared CoreProtect hook. Existing server-facing identifiers and data formats remain unchanged in this release. See docs/architecture.md for the embedding contract and migration constraints.

Ore Coverage

The runtime logic currently tracks these ore families:

  • Coal: COAL_ORE, DEEPSLATE_COAL_ORE
  • Iron: IRON_ORE, DEEPSLATE_IRON_ORE, RAW_IRON_BLOCK
  • Copper: COPPER_ORE, DEEPSLATE_COPPER_ORE, RAW_COPPER_BLOCK
  • Gold: GOLD_ORE, DEEPSLATE_GOLD_ORE
  • Redstone: REDSTONE_ORE, DEEPSLATE_REDSTONE_ORE
  • Emerald: EMERALD_ORE, DEEPSLATE_EMERALD_ORE
  • Lapis: LAPIS_ORE, DEEPSLATE_LAPIS_ORE
  • Diamond: DIAMOND_ORE, DEEPSLATE_DIAMOND_ORE
  • Nether gold family: NETHER_GOLD_ORE, GILDED_BLACKSTONE
  • Nether quartz: NETHER_QUARTZ_ORE
  • Ancient debris: ANCIENT_DEBRIS

RAW_GOLD_BLOCK is intentionally not tracked.

Build

Build with Gradle using the required Java 25.0.4 JDK:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-25.0.4.jdk/Contents/Home \
gradle clean build printBuildConfig --warning-mode all

Release metadata is centralized in version.properties. Update the semantic version and build number there exactly once for a release; repeated build and verification runs then reproduce the same artifact version instead of silently incrementing it.

gradle check includes verifyReleaseMetadata, which checks the packaged plugin.yml, generated xrayheuristics/build-info.properties, README, installation/integration docs, and public-docs manifest for stale version, build, Java, Paper API, and channel metadata.

Official references used for the target are the Paper project setup guide and Paper 26.2 API Javadocs.

Installation Summary

  1. Install Paper with Java 25.
  2. Install CoreProtect before this plugin.
  3. Place the built jar in your server's plugins/ folder.
  4. Start the server so plugins/1MB-XRayHeuristics/ and its generated files are created.
  5. Verify the load with version xrayheuristics, /xrayer info, and /xrayer debug.

Detailed steps are in docs/installation.md.

Integrations

  • Required runtime dependency: CoreProtect
  • Optional storage integration: MySQL
  • No verified PlaceholderAPI expansion registration
  • No required dependency on CMI, LuckPerms, Vault, or PlaceholderAPI for the core plugin behavior

See docs/integrations.md for details.

Credits

  • Original plugin authors: __Mithrandir__ and Greymagic27
  • 1MoreBlock maintenance, packaging, compatibility work, and testing: mrfloris
  • Thanks to everyone who contributed testing and follow-up fixes across the 1MoreBlock Anti-XRay plugin line

About

Fork (tnx greymagic27) for 1MoreBlock.com Paper 1.21.8 / Java 21+ - Detects and punishes xrayers in mining situations.

Resources

Stars

1 star

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 XRayHeuristics

1MB XRayHeuristics is a standalone 1MoreBlock heuristic Anti-XRay plugin for Paper. It integrates with CoreProtect and focuses on suspicious mining patterns, live suspicion sessions, and staff handling workflows instead of lookup-report style commands. The internal plugin id is xrayheuristics, and the canonical root command is /xrayer.

Technical Overview

  • Player-facing name: 1MB XRayHeuristics
  • Internal plugin name: xrayheuristics
  • Main command: /xrayer
  • Current release: 2.0.1-029-j25-26.2
  • Semantic version: 2.0.1
  • Build number: 029
  • Build target: Java 25
  • Release build JDK: Oracle JDK 25.0.4
  • Runtime verification JDKs: Oracle JDK 25.0.4 and 26.0.2
  • Paper compile target: 26.2.build.84-stable
  • Declared plugin.yml api-version floor: 1.21.11
  • CoreProtect compile target: 24.0-dev1 with API 12
  • Minimum CoreProtect API accepted at runtime: 11
  • Release artifact: build/libs/1MB-XRayHeuristics-v2.0.1-029-j25-26.2.jar
  • Plugin data directory: plugins/1MB-XRayHeuristics/
  • Persistent storage backends: JSON or MYSQL
  • Maintained Java namespace: com.onemoreblock.coreprotectaddons.xrayheuristics
  • Runtime boundary: reusable XRayHeuristicsModule plus a standalone XRayHeuristicsPlugin adapter

Documentation

Commands

CommandPurposeNotes
/xrayer infoPublic introduction, quick start, and docs link.No permission check in the current implementation.
/xrayer helpCommand summary and plugin overview.Also available from /xrayer with no arguments.
/xrayer suspicion [player]Show the current live suspicion value.Requires xrayheuristics.use or the legacy suspicion node.
/xrayer debugShow build, server, config, storage, and CoreProtect hook status.Admin-level command.
/xrayer debug helpShow available debug pages.Admin-level command.
/xrayer debug permissionsShow permission nodes and defaults.Admin-level command.
/xrayer debug commandsShow command syntax and usage notes.Admin-level command.
/xrayer debug configShow the supported live config values.Admin-level command.
/xrayer debug set <key> <value>Save a supported config key and reload plugin state.Admin-level command.
/xrayer reloadReload config.yml, locale.yml, and weights.yml.Admin-level command.
/xrayer resetsuspicion [player]Clear an in-memory suspicion session.Admin-level command.
/xrayer <player>Manually handle a player as an xrayer.Admin-level command.
/xrayer vaultOpen the handled-player vault GUI.Player-only, admin-level command.
/xrayer absolve <player>Return stored items and remove a vault entry.The target must be online.
/xrayer purge <player>Remove a vault entry without returning items.Command path only works for online targets.

Single-letter aliases are available for several subcommands: x, v, r, rs, s, a, and p. The explicit /xrayer xrayer <player> form also works, and /xrayer xrayer without a player only creates a dummy entry when AddRandomDummyXrayerIfNoXrayerCommandParameters is enabled.

Permissions

PermissionDefaultEffective use
xrayheuristics.useopRequired for /xrayer suspicion [player].
xrayheuristics.adminopRequired for debug, reload, resets, manual handling, vault, absolve, purge, and the dummy-entry helper.
xrayheuristics.notifyopReceives automatic handled-player warning messages.
xrayheuristics.ignorefalseExempts a player from heuristic tracking.

Legacy nodes are still accepted for compatibility: AXH.Commands.*, AXH.Vault.Purge, AXH.XrayerWarning, and AXH.Ignore.

Implementation note: the current code does not enforce a permission check for /xrayer, /xrayer help, or /xrayer info, even though older documentation historically grouped help together with xrayheuristics.use.

Placeholders

The plugin does not register PlaceholderAPI expansions. The verified placeholders are internal placeholders used in config-driven commands and GUI/locale text:

  • {PlayerName}
  • {TimesDetected}
  • {HandledTimesAmount}
  • {FirstTimeDetected}
  • {LastSeenTime}

See docs/placeholders.md for exact usage.

Configuration and Data

config.yml is the active runtime configuration file. It is loaded and saved through Paper/Bukkit's comment-aware YamlConfiguration API with comment parsing enabled, and admin-edited values are preserved when defaults are synchronized back in.

Other generated files:

  • locale.yml: generated language and GUI text values
  • weights.yml: generated per-world weight-card data retained for compatibility
  • data.json: the default JSON storage file when StorageType is JSON

Important runtime note: the current heuristic calculator reads its live suspicion weights from the top-level keys in config.yml. weights.yml is generated and reloaded, but it is not the active source for the main suspicion-weight checks in the current code.

Architecture and Future Consolidation

The current jar remains a standalone plugin, but its maintained implementation is organized as an extractable X-ray Heuristics feature. XRayHeuristicsPlugin owns the standalone Paper lifecycle and compatibility paths; XRayHeuristicsModule owns feature state, listeners, CoreProtect access, commands, config, and handled-player persistence.

This boundary is intended for the planned unified CoreProtect Add-ons plugin. The future host can instantiate the module with a shared JavaPlugin, an explicit feature data directory, and a shared CoreProtect hook. Existing server-facing identifiers and data formats remain unchanged in this release. See docs/architecture.md for the embedding contract and migration constraints.

Ore Coverage

The runtime logic currently tracks these ore families:

  • Coal: COAL_ORE, DEEPSLATE_COAL_ORE
  • Iron: IRON_ORE, DEEPSLATE_IRON_ORE, RAW_IRON_BLOCK
  • Copper: COPPER_ORE, DEEPSLATE_COPPER_ORE, RAW_COPPER_BLOCK
  • Gold: GOLD_ORE, DEEPSLATE_GOLD_ORE
  • Redstone: REDSTONE_ORE, DEEPSLATE_REDSTONE_ORE
  • Emerald: EMERALD_ORE, DEEPSLATE_EMERALD_ORE
  • Lapis: LAPIS_ORE, DEEPSLATE_LAPIS_ORE
  • Diamond: DIAMOND_ORE, DEEPSLATE_DIAMOND_ORE
  • Nether gold family: NETHER_GOLD_ORE, GILDED_BLACKSTONE
  • Nether quartz: NETHER_QUARTZ_ORE
  • Ancient debris: ANCIENT_DEBRIS

RAW_GOLD_BLOCK is intentionally not tracked.

Build

Build with Gradle using the required Java 25.0.4 JDK:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-25.0.4.jdk/Contents/Home \
gradle clean build printBuildConfig --warning-mode all

Release metadata is centralized in version.properties. Update the semantic version and build number there exactly once for a release; repeated build and verification runs then reproduce the same artifact version instead of silently incrementing it.

gradle check includes verifyReleaseMetadata, which checks the packaged plugin.yml, generated xrayheuristics/build-info.properties, README, installation/integration docs, and public-docs manifest for stale version, build, Java, Paper API, and channel metadata.

Official references used for the target are the Paper project setup guide and Paper 26.2 API Javadocs.

Installation Summary

  1. Install Paper with Java 25.
  2. Install CoreProtect before this plugin.
  3. Place the built jar in your server's plugins/ folder.
  4. Start the server so plugins/1MB-XRayHeuristics/ and its generated files are created.
  5. Verify the load with version xrayheuristics, /xrayer info, and /xrayer debug.

Detailed steps are in docs/installation.md.

Integrations

  • Required runtime dependency: CoreProtect
  • Optional storage integration: MySQL
  • No verified PlaceholderAPI expansion registration
  • No required dependency on CMI, LuckPerms, Vault, or PlaceholderAPI for the core plugin behavior

See docs/integrations.md for details.

Credits

  • Original plugin authors: __Mithrandir__ and Greymagic27
  • 1MoreBlock maintenance, packaging, compatibility work, and testing: mrfloris
  • Thanks to everyone who contributed testing and follow-up fixes across the 1MoreBlock Anti-XRay plugin line

About

Fork (tnx greymagic27) for 1MoreBlock.com Paper 1.21.8 / Java 21+ - Detects and punishes xrayers in mining situations.

Resources

Stars

1 star

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 XRayHeuristics

1MB XRayHeuristics is a standalone 1MoreBlock heuristic Anti-XRay plugin for Paper. It integrates with CoreProtect and focuses on suspicious mining patterns, live suspicion sessions, and staff handling workflows instead of lookup-report style commands. The internal plugin id is xrayheuristics, and the canonical root command is /xrayer.

Technical Overview

  • Player-facing name: 1MB XRayHeuristics
  • Internal plugin name: xrayheuristics
  • Main command: /xrayer
  • Current release: 2.0.1-029-j25-26.2
  • Semantic version: 2.0.1
  • Build number: 029
  • Build target: Java 25
  • Release build JDK: Oracle JDK 25.0.4
  • Runtime verification JDKs: Oracle JDK 25.0.4 and 26.0.2
  • Paper compile target: 26.2.build.84-stable
  • Declared plugin.yml api-version floor: 1.21.11
  • CoreProtect compile target: 24.0-dev1 with API 12
  • Minimum CoreProtect API accepted at runtime: 11
  • Release artifact: build/libs/1MB-XRayHeuristics-v2.0.1-029-j25-26.2.jar
  • Plugin data directory: plugins/1MB-XRayHeuristics/
  • Persistent storage backends: JSON or MYSQL
  • Maintained Java namespace: com.onemoreblock.coreprotectaddons.xrayheuristics
  • Runtime boundary: reusable XRayHeuristicsModule plus a standalone XRayHeuristicsPlugin adapter

Documentation

Commands

CommandPurposeNotes
/xrayer infoPublic introduction, quick start, and docs link.No permission check in the current implementation.
/xrayer helpCommand summary and plugin overview.Also available from /xrayer with no arguments.
/xrayer suspicion [player]Show the current live suspicion value.Requires xrayheuristics.use or the legacy suspicion node.
/xrayer debugShow build, server, config, storage, and CoreProtect hook status.Admin-level command.
/xrayer debug helpShow available debug pages.Admin-level command.
/xrayer debug permissionsShow permission nodes and defaults.Admin-level command.
/xrayer debug commandsShow command syntax and usage notes.Admin-level command.
/xrayer debug configShow the supported live config values.Admin-level command.
/xrayer debug set <key> <value>Save a supported config key and reload plugin state.Admin-level command.
/xrayer reloadReload config.yml, locale.yml, and weights.yml.Admin-level command.
/xrayer resetsuspicion [player]Clear an in-memory suspicion session.Admin-level command.
/xrayer <player>Manually handle a player as an xrayer.Admin-level command.
/xrayer vaultOpen the handled-player vault GUI.Player-only, admin-level command.
/xrayer absolve <player>Return stored items and remove a vault entry.The target must be online.
/xrayer purge <player>Remove a vault entry without returning items.Command path only works for online targets.

Single-letter aliases are available for several subcommands: x, v, r, rs, s, a, and p. The explicit /xrayer xrayer <player> form also works, and /xrayer xrayer without a player only creates a dummy entry when AddRandomDummyXrayerIfNoXrayerCommandParameters is enabled.

Permissions

PermissionDefaultEffective use
xrayheuristics.useopRequired for /xrayer suspicion [player].
xrayheuristics.adminopRequired for debug, reload, resets, manual handling, vault, absolve, purge, and the dummy-entry helper.
xrayheuristics.notifyopReceives automatic handled-player warning messages.
xrayheuristics.ignorefalseExempts a player from heuristic tracking.

Legacy nodes are still accepted for compatibility: AXH.Commands.*, AXH.Vault.Purge, AXH.XrayerWarning, and AXH.Ignore.

Implementation note: the current code does not enforce a permission check for /xrayer, /xrayer help, or /xrayer info, even though older documentation historically grouped help together with xrayheuristics.use.

Placeholders

The plugin does not register PlaceholderAPI expansions. The verified placeholders are internal placeholders used in config-driven commands and GUI/locale text:

  • {PlayerName}
  • {TimesDetected}
  • {HandledTimesAmount}
  • {FirstTimeDetected}
  • {LastSeenTime}

See docs/placeholders.md for exact usage.

Configuration and Data

config.yml is the active runtime configuration file. It is loaded and saved through Paper/Bukkit's comment-aware YamlConfiguration API with comment parsing enabled, and admin-edited values are preserved when defaults are synchronized back in.

Other generated files:

  • locale.yml: generated language and GUI text values
  • weights.yml: generated per-world weight-card data retained for compatibility
  • data.json: the default JSON storage file when StorageType is JSON

Important runtime note: the current heuristic calculator reads its live suspicion weights from the top-level keys in config.yml. weights.yml is generated and reloaded, but it is not the active source for the main suspicion-weight checks in the current code.

Architecture and Future Consolidation

The current jar remains a standalone plugin, but its maintained implementation is organized as an extractable X-ray Heuristics feature. XRayHeuristicsPlugin owns the standalone Paper lifecycle and compatibility paths; XRayHeuristicsModule owns feature state, listeners, CoreProtect access, commands, config, and handled-player persistence.

This boundary is intended for the planned unified CoreProtect Add-ons plugin. The future host can instantiate the module with a shared JavaPlugin, an explicit feature data directory, and a shared CoreProtect hook. Existing server-facing identifiers and data formats remain unchanged in this release. See docs/architecture.md for the embedding contract and migration constraints.

Ore Coverage

The runtime logic currently tracks these ore families:

  • Coal: COAL_ORE, DEEPSLATE_COAL_ORE
  • Iron: IRON_ORE, DEEPSLATE_IRON_ORE, RAW_IRON_BLOCK
  • Copper: COPPER_ORE, DEEPSLATE_COPPER_ORE, RAW_COPPER_BLOCK
  • Gold: GOLD_ORE, DEEPSLATE_GOLD_ORE
  • Redstone: REDSTONE_ORE, DEEPSLATE_REDSTONE_ORE
  • Emerald: EMERALD_ORE, DEEPSLATE_EMERALD_ORE
  • Lapis: LAPIS_ORE, DEEPSLATE_LAPIS_ORE
  • Diamond: DIAMOND_ORE, DEEPSLATE_DIAMOND_ORE
  • Nether gold family: NETHER_GOLD_ORE, GILDED_BLACKSTONE
  • Nether quartz: NETHER_QUARTZ_ORE
  • Ancient debris: ANCIENT_DEBRIS

RAW_GOLD_BLOCK is intentionally not tracked.

Build

Build with Gradle using the required Java 25.0.4 JDK:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-25.0.4.jdk/Contents/Home \
gradle clean build printBuildConfig --warning-mode all

Release metadata is centralized in version.properties. Update the semantic version and build number there exactly once for a release; repeated build and verification runs then reproduce the same artifact version instead of silently incrementing it.

gradle check includes verifyReleaseMetadata, which checks the packaged plugin.yml, generated xrayheuristics/build-info.properties, README, installation/integration docs, and public-docs manifest for stale version, build, Java, Paper API, and channel metadata.

Official references used for the target are the Paper project setup guide and Paper 26.2 API Javadocs.

Installation Summary

  1. Install Paper with Java 25.
  2. Install CoreProtect before this plugin.
  3. Place the built jar in your server's plugins/ folder.
  4. Start the server so plugins/1MB-XRayHeuristics/ and its generated files are created.
  5. Verify the load with version xrayheuristics, /xrayer info, and /xrayer debug.

Detailed steps are in docs/installation.md.

Integrations

  • Required runtime dependency: CoreProtect
  • Optional storage integration: MySQL
  • No verified PlaceholderAPI expansion registration
  • No required dependency on CMI, LuckPerms, Vault, or PlaceholderAPI for the core plugin behavior

See docs/integrations.md for details.

Credits

  • Original plugin authors: __Mithrandir__ and Greymagic27
  • 1MoreBlock maintenance, packaging, compatibility work, and testing: mrfloris
  • Thanks to everyone who contributed testing and follow-up fixes across the 1MoreBlock Anti-XRay plugin line

About

Fork (tnx greymagic27) for 1MoreBlock.com Paper 1.21.8 / Java 21+ - Detects and punishes xrayers in mining situations.

Resources

Stars

1 star

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 XRayHeuristics

1MB XRayHeuristics is a standalone 1MoreBlock heuristic Anti-XRay plugin for Paper. It integrates with CoreProtect and focuses on suspicious mining patterns, live suspicion sessions, and staff handling workflows instead of lookup-report style commands. The internal plugin id is xrayheuristics, and the canonical root command is /xrayer.

Technical Overview

  • Player-facing name: 1MB XRayHeuristics
  • Internal plugin name: xrayheuristics
  • Main command: /xrayer
  • Current release: 2.0.1-029-j25-26.2
  • Semantic version: 2.0.1
  • Build number: 029
  • Build target: Java 25
  • Release build JDK: Oracle JDK 25.0.4
  • Runtime verification JDKs: Oracle JDK 25.0.4 and 26.0.2
  • Paper compile target: 26.2.build.84-stable
  • Declared plugin.yml api-version floor: 1.21.11
  • CoreProtect compile target: 24.0-dev1 with API 12
  • Minimum CoreProtect API accepted at runtime: 11
  • Release artifact: build/libs/1MB-XRayHeuristics-v2.0.1-029-j25-26.2.jar
  • Plugin data directory: plugins/1MB-XRayHeuristics/
  • Persistent storage backends: JSON or MYSQL
  • Maintained Java namespace: com.onemoreblock.coreprotectaddons.xrayheuristics
  • Runtime boundary: reusable XRayHeuristicsModule plus a standalone XRayHeuristicsPlugin adapter

Documentation

Commands

CommandPurposeNotes
/xrayer infoPublic introduction, quick start, and docs link.No permission check in the current implementation.
/xrayer helpCommand summary and plugin overview.Also available from /xrayer with no arguments.
/xrayer suspicion [player]Show the current live suspicion value.Requires xrayheuristics.use or the legacy suspicion node.
/xrayer debugShow build, server, config, storage, and CoreProtect hook status.Admin-level command.
/xrayer debug helpShow available debug pages.Admin-level command.
/xrayer debug permissionsShow permission nodes and defaults.Admin-level command.
/xrayer debug commandsShow command syntax and usage notes.Admin-level command.
/xrayer debug configShow the supported live config values.Admin-level command.
/xrayer debug set <key> <value>Save a supported config key and reload plugin state.Admin-level command.
/xrayer reloadReload config.yml, locale.yml, and weights.yml.Admin-level command.
/xrayer resetsuspicion [player]Clear an in-memory suspicion session.Admin-level command.
/xrayer <player>Manually handle a player as an xrayer.Admin-level command.
/xrayer vaultOpen the handled-player vault GUI.Player-only, admin-level command.
/xrayer absolve <player>Return stored items and remove a vault entry.The target must be online.
/xrayer purge <player>Remove a vault entry without returning items.Command path only works for online targets.

Single-letter aliases are available for several subcommands: x, v, r, rs, s, a, and p. The explicit /xrayer xrayer <player> form also works, and /xrayer xrayer without a player only creates a dummy entry when AddRandomDummyXrayerIfNoXrayerCommandParameters is enabled.

Permissions

PermissionDefaultEffective use
xrayheuristics.useopRequired for /xrayer suspicion [player].
xrayheuristics.adminopRequired for debug, reload, resets, manual handling, vault, absolve, purge, and the dummy-entry helper.
xrayheuristics.notifyopReceives automatic handled-player warning messages.
xrayheuristics.ignorefalseExempts a player from heuristic tracking.

Legacy nodes are still accepted for compatibility: AXH.Commands.*, AXH.Vault.Purge, AXH.XrayerWarning, and AXH.Ignore.

Implementation note: the current code does not enforce a permission check for /xrayer, /xrayer help, or /xrayer info, even though older documentation historically grouped help together with xrayheuristics.use.

Placeholders

The plugin does not register PlaceholderAPI expansions. The verified placeholders are internal placeholders used in config-driven commands and GUI/locale text:

  • {PlayerName}
  • {TimesDetected}
  • {HandledTimesAmount}
  • {FirstTimeDetected}
  • {LastSeenTime}

See docs/placeholders.md for exact usage.

Configuration and Data

config.yml is the active runtime configuration file. It is loaded and saved through Paper/Bukkit's comment-aware YamlConfiguration API with comment parsing enabled, and admin-edited values are preserved when defaults are synchronized back in.

Other generated files:

  • locale.yml: generated language and GUI text values
  • weights.yml: generated per-world weight-card data retained for compatibility
  • data.json: the default JSON storage file when StorageType is JSON

Important runtime note: the current heuristic calculator reads its live suspicion weights from the top-level keys in config.yml. weights.yml is generated and reloaded, but it is not the active source for the main suspicion-weight checks in the current code.

Architecture and Future Consolidation

The current jar remains a standalone plugin, but its maintained implementation is organized as an extractable X-ray Heuristics feature. XRayHeuristicsPlugin owns the standalone Paper lifecycle and compatibility paths; XRayHeuristicsModule owns feature state, listeners, CoreProtect access, commands, config, and handled-player persistence.

This boundary is intended for the planned unified CoreProtect Add-ons plugin. The future host can instantiate the module with a shared JavaPlugin, an explicit feature data directory, and a shared CoreProtect hook. Existing server-facing identifiers and data formats remain unchanged in this release. See docs/architecture.md for the embedding contract and migration constraints.

Ore Coverage

The runtime logic currently tracks these ore families:

  • Coal: COAL_ORE, DEEPSLATE_COAL_ORE
  • Iron: IRON_ORE, DEEPSLATE_IRON_ORE, RAW_IRON_BLOCK
  • Copper: COPPER_ORE, DEEPSLATE_COPPER_ORE, RAW_COPPER_BLOCK
  • Gold: GOLD_ORE, DEEPSLATE_GOLD_ORE
  • Redstone: REDSTONE_ORE, DEEPSLATE_REDSTONE_ORE
  • Emerald: EMERALD_ORE, DEEPSLATE_EMERALD_ORE
  • Lapis: LAPIS_ORE, DEEPSLATE_LAPIS_ORE
  • Diamond: DIAMOND_ORE, DEEPSLATE_DIAMOND_ORE
  • Nether gold family: NETHER_GOLD_ORE, GILDED_BLACKSTONE
  • Nether quartz: NETHER_QUARTZ_ORE
  • Ancient debris: ANCIENT_DEBRIS

RAW_GOLD_BLOCK is intentionally not tracked.

Build

Build with Gradle using the required Java 25.0.4 JDK:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-25.0.4.jdk/Contents/Home \
gradle clean build printBuildConfig --warning-mode all

Release metadata is centralized in version.properties. Update the semantic version and build number there exactly once for a release; repeated build and verification runs then reproduce the same artifact version instead of silently incrementing it.

gradle check includes verifyReleaseMetadata, which checks the packaged plugin.yml, generated xrayheuristics/build-info.properties, README, installation/integration docs, and public-docs manifest for stale version, build, Java, Paper API, and channel metadata.

Official references used for the target are the Paper project setup guide and Paper 26.2 API Javadocs.

Installation Summary

  1. Install Paper with Java 25.
  2. Install CoreProtect before this plugin.
  3. Place the built jar in your server's plugins/ folder.
  4. Start the server so plugins/1MB-XRayHeuristics/ and its generated files are created.
  5. Verify the load with version xrayheuristics, /xrayer info, and /xrayer debug.

Detailed steps are in docs/installation.md.

Integrations

  • Required runtime dependency: CoreProtect
  • Optional storage integration: MySQL
  • No verified PlaceholderAPI expansion registration
  • No required dependency on CMI, LuckPerms, Vault, or PlaceholderAPI for the core plugin behavior

See docs/integrations.md for details.

Credits

  • Original plugin authors: __Mithrandir__ and Greymagic27
  • 1MoreBlock maintenance, packaging, compatibility work, and testing: mrfloris
  • Thanks to everyone who contributed testing and follow-up fixes across the 1MoreBlock Anti-XRay plugin line

About

Fork (tnx greymagic27) for 1MoreBlock.com Paper 1.21.8 / Java 21+ - Detects and punishes xrayers in mining situations.

Resources

Stars

1 star

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 XRayHeuristics

1MB XRayHeuristics is a standalone 1MoreBlock heuristic Anti-XRay plugin for Paper. It integrates with CoreProtect and focuses on suspicious mining patterns, live suspicion sessions, and staff handling workflows instead of lookup-report style commands. The internal plugin id is xrayheuristics, and the canonical root command is /xrayer.

Technical Overview

  • Player-facing name: 1MB XRayHeuristics
  • Internal plugin name: xrayheuristics
  • Main command: /xrayer
  • Current release: 2.0.1-029-j25-26.2
  • Semantic version: 2.0.1
  • Build number: 029
  • Build target: Java 25
  • Release build JDK: Oracle JDK 25.0.4
  • Runtime verification JDKs: Oracle JDK 25.0.4 and 26.0.2
  • Paper compile target: 26.2.build.84-stable
  • Declared plugin.yml api-version floor: 1.21.11
  • CoreProtect compile target: 24.0-dev1 with API 12
  • Minimum CoreProtect API accepted at runtime: 11
  • Release artifact: build/libs/1MB-XRayHeuristics-v2.0.1-029-j25-26.2.jar
  • Plugin data directory: plugins/1MB-XRayHeuristics/
  • Persistent storage backends: JSON or MYSQL
  • Maintained Java namespace: com.onemoreblock.coreprotectaddons.xrayheuristics
  • Runtime boundary: reusable XRayHeuristicsModule plus a standalone XRayHeuristicsPlugin adapter

Documentation

Commands

CommandPurposeNotes
/xrayer infoPublic introduction, quick start, and docs link.No permission check in the current implementation.
/xrayer helpCommand summary and plugin overview.Also available from /xrayer with no arguments.
/xrayer suspicion [player]Show the current live suspicion value.Requires xrayheuristics.use or the legacy suspicion node.
/xrayer debugShow build, server, config, storage, and CoreProtect hook status.Admin-level command.
/xrayer debug helpShow available debug pages.Admin-level command.
/xrayer debug permissionsShow permission nodes and defaults.Admin-level command.
/xrayer debug commandsShow command syntax and usage notes.Admin-level command.
/xrayer debug configShow the supported live config values.Admin-level command.
/xrayer debug set <key> <value>Save a supported config key and reload plugin state.Admin-level command.
/xrayer reloadReload config.yml, locale.yml, and weights.yml.Admin-level command.
/xrayer resetsuspicion [player]Clear an in-memory suspicion session.Admin-level command.
/xrayer <player>Manually handle a player as an xrayer.Admin-level command.
/xrayer vaultOpen the handled-player vault GUI.Player-only, admin-level command.
/xrayer absolve <player>Return stored items and remove a vault entry.The target must be online.
/xrayer purge <player>Remove a vault entry without returning items.Command path only works for online targets.

Single-letter aliases are available for several subcommands: x, v, r, rs, s, a, and p. The explicit /xrayer xrayer <player> form also works, and /xrayer xrayer without a player only creates a dummy entry when AddRandomDummyXrayerIfNoXrayerCommandParameters is enabled.

Permissions

PermissionDefaultEffective use
xrayheuristics.useopRequired for /xrayer suspicion [player].
xrayheuristics.adminopRequired for debug, reload, resets, manual handling, vault, absolve, purge, and the dummy-entry helper.
xrayheuristics.notifyopReceives automatic handled-player warning messages.
xrayheuristics.ignorefalseExempts a player from heuristic tracking.

Legacy nodes are still accepted for compatibility: AXH.Commands.*, AXH.Vault.Purge, AXH.XrayerWarning, and AXH.Ignore.

Implementation note: the current code does not enforce a permission check for /xrayer, /xrayer help, or /xrayer info, even though older documentation historically grouped help together with xrayheuristics.use.

Placeholders

The plugin does not register PlaceholderAPI expansions. The verified placeholders are internal placeholders used in config-driven commands and GUI/locale text:

  • {PlayerName}
  • {TimesDetected}
  • {HandledTimesAmount}
  • {FirstTimeDetected}
  • {LastSeenTime}

See docs/placeholders.md for exact usage.

Configuration and Data

config.yml is the active runtime configuration file. It is loaded and saved through Paper/Bukkit's comment-aware YamlConfiguration API with comment parsing enabled, and admin-edited values are preserved when defaults are synchronized back in.

Other generated files:

  • locale.yml: generated language and GUI text values
  • weights.yml: generated per-world weight-card data retained for compatibility
  • data.json: the default JSON storage file when StorageType is JSON

Important runtime note: the current heuristic calculator reads its live suspicion weights from the top-level keys in config.yml. weights.yml is generated and reloaded, but it is not the active source for the main suspicion-weight checks in the current code.

Architecture and Future Consolidation

The current jar remains a standalone plugin, but its maintained implementation is organized as an extractable X-ray Heuristics feature. XRayHeuristicsPlugin owns the standalone Paper lifecycle and compatibility paths; XRayHeuristicsModule owns feature state, listeners, CoreProtect access, commands, config, and handled-player persistence.

This boundary is intended for the planned unified CoreProtect Add-ons plugin. The future host can instantiate the module with a shared JavaPlugin, an explicit feature data directory, and a shared CoreProtect hook. Existing server-facing identifiers and data formats remain unchanged in this release. See docs/architecture.md for the embedding contract and migration constraints.

Ore Coverage

The runtime logic currently tracks these ore families:

  • Coal: COAL_ORE, DEEPSLATE_COAL_ORE
  • Iron: IRON_ORE, DEEPSLATE_IRON_ORE, RAW_IRON_BLOCK
  • Copper: COPPER_ORE, DEEPSLATE_COPPER_ORE, RAW_COPPER_BLOCK
  • Gold: GOLD_ORE, DEEPSLATE_GOLD_ORE
  • Redstone: REDSTONE_ORE, DEEPSLATE_REDSTONE_ORE
  • Emerald: EMERALD_ORE, DEEPSLATE_EMERALD_ORE
  • Lapis: LAPIS_ORE, DEEPSLATE_LAPIS_ORE
  • Diamond: DIAMOND_ORE, DEEPSLATE_DIAMOND_ORE
  • Nether gold family: NETHER_GOLD_ORE, GILDED_BLACKSTONE
  • Nether quartz: NETHER_QUARTZ_ORE
  • Ancient debris: ANCIENT_DEBRIS

RAW_GOLD_BLOCK is intentionally not tracked.

Build

Build with Gradle using the required Java 25.0.4 JDK:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-25.0.4.jdk/Contents/Home \
gradle clean build printBuildConfig --warning-mode all

Release metadata is centralized in version.properties. Update the semantic version and build number there exactly once for a release; repeated build and verification runs then reproduce the same artifact version instead of silently incrementing it.

gradle check includes verifyReleaseMetadata, which checks the packaged plugin.yml, generated xrayheuristics/build-info.properties, README, installation/integration docs, and public-docs manifest for stale version, build, Java, Paper API, and channel metadata.

Official references used for the target are the Paper project setup guide and Paper 26.2 API Javadocs.

Installation Summary

  1. Install Paper with Java 25.
  2. Install CoreProtect before this plugin.
  3. Place the built jar in your server's plugins/ folder.
  4. Start the server so plugins/1MB-XRayHeuristics/ and its generated files are created.
  5. Verify the load with version xrayheuristics, /xrayer info, and /xrayer debug.

Detailed steps are in docs/installation.md.

Integrations

  • Required runtime dependency: CoreProtect
  • Optional storage integration: MySQL
  • No verified PlaceholderAPI expansion registration
  • No required dependency on CMI, LuckPerms, Vault, or PlaceholderAPI for the core plugin behavior

See docs/integrations.md for details.

Credits

  • Original plugin authors: __Mithrandir__ and Greymagic27
  • 1MoreBlock maintenance, packaging, compatibility work, and testing: mrfloris
  • Thanks to everyone who contributed testing and follow-up fixes across the 1MoreBlock Anti-XRay plugin line

About

Fork (tnx greymagic27) for 1MoreBlock.com Paper 1.21.8 / Java 21+ - Detects and punishes xrayers in mining situations.

Resources

Stars

1 star

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 XRayHeuristics

1MB XRayHeuristics is a standalone 1MoreBlock heuristic Anti-XRay plugin for Paper. It integrates with CoreProtect and focuses on suspicious mining patterns, live suspicion sessions, and staff handling workflows instead of lookup-report style commands. The internal plugin id is xrayheuristics, and the canonical root command is /xrayer.

Technical Overview

  • Player-facing name: 1MB XRayHeuristics
  • Internal plugin name: xrayheuristics
  • Main command: /xrayer
  • Current release: 2.0.1-029-j25-26.2
  • Semantic version: 2.0.1
  • Build number: 029
  • Build target: Java 25
  • Release build JDK: Oracle JDK 25.0.4
  • Runtime verification JDKs: Oracle JDK 25.0.4 and 26.0.2
  • Paper compile target: 26.2.build.84-stable
  • Declared plugin.yml api-version floor: 1.21.11
  • CoreProtect compile target: 24.0-dev1 with API 12
  • Minimum CoreProtect API accepted at runtime: 11
  • Release artifact: build/libs/1MB-XRayHeuristics-v2.0.1-029-j25-26.2.jar
  • Plugin data directory: plugins/1MB-XRayHeuristics/
  • Persistent storage backends: JSON or MYSQL
  • Maintained Java namespace: com.onemoreblock.coreprotectaddons.xrayheuristics
  • Runtime boundary: reusable XRayHeuristicsModule plus a standalone XRayHeuristicsPlugin adapter

Documentation

Commands

CommandPurposeNotes
/xrayer infoPublic introduction, quick start, and docs link.No permission check in the current implementation.
/xrayer helpCommand summary and plugin overview.Also available from /xrayer with no arguments.
/xrayer suspicion [player]Show the current live suspicion value.Requires xrayheuristics.use or the legacy suspicion node.
/xrayer debugShow build, server, config, storage, and CoreProtect hook status.Admin-level command.
/xrayer debug helpShow available debug pages.Admin-level command.
/xrayer debug permissionsShow permission nodes and defaults.Admin-level command.
/xrayer debug commandsShow command syntax and usage notes.Admin-level command.
/xrayer debug configShow the supported live config values.Admin-level command.
/xrayer debug set <key> <value>Save a supported config key and reload plugin state.Admin-level command.
/xrayer reloadReload config.yml, locale.yml, and weights.yml.Admin-level command.
/xrayer resetsuspicion [player]Clear an in-memory suspicion session.Admin-level command.
/xrayer <player>Manually handle a player as an xrayer.Admin-level command.
/xrayer vaultOpen the handled-player vault GUI.Player-only, admin-level command.
/xrayer absolve <player>Return stored items and remove a vault entry.The target must be online.
/xrayer purge <player>Remove a vault entry without returning items.Command path only works for online targets.

Single-letter aliases are available for several subcommands: x, v, r, rs, s, a, and p. The explicit /xrayer xrayer <player> form also works, and /xrayer xrayer without a player only creates a dummy entry when AddRandomDummyXrayerIfNoXrayerCommandParameters is enabled.

Permissions

PermissionDefaultEffective use
xrayheuristics.useopRequired for /xrayer suspicion [player].
xrayheuristics.adminopRequired for debug, reload, resets, manual handling, vault, absolve, purge, and the dummy-entry helper.
xrayheuristics.notifyopReceives automatic handled-player warning messages.
xrayheuristics.ignorefalseExempts a player from heuristic tracking.

Legacy nodes are still accepted for compatibility: AXH.Commands.*, AXH.Vault.Purge, AXH.XrayerWarning, and AXH.Ignore.

Implementation note: the current code does not enforce a permission check for /xrayer, /xrayer help, or /xrayer info, even though older documentation historically grouped help together with xrayheuristics.use.

Placeholders

The plugin does not register PlaceholderAPI expansions. The verified placeholders are internal placeholders used in config-driven commands and GUI/locale text:

  • {PlayerName}
  • {TimesDetected}
  • {HandledTimesAmount}
  • {FirstTimeDetected}
  • {LastSeenTime}

See docs/placeholders.md for exact usage.

Configuration and Data

config.yml is the active runtime configuration file. It is loaded and saved through Paper/Bukkit's comment-aware YamlConfiguration API with comment parsing enabled, and admin-edited values are preserved when defaults are synchronized back in.

Other generated files:

  • locale.yml: generated language and GUI text values
  • weights.yml: generated per-world weight-card data retained for compatibility
  • data.json: the default JSON storage file when StorageType is JSON

Important runtime note: the current heuristic calculator reads its live suspicion weights from the top-level keys in config.yml. weights.yml is generated and reloaded, but it is not the active source for the main suspicion-weight checks in the current code.

Architecture and Future Consolidation

The current jar remains a standalone plugin, but its maintained implementation is organized as an extractable X-ray Heuristics feature. XRayHeuristicsPlugin owns the standalone Paper lifecycle and compatibility paths; XRayHeuristicsModule owns feature state, listeners, CoreProtect access, commands, config, and handled-player persistence.

This boundary is intended for the planned unified CoreProtect Add-ons plugin. The future host can instantiate the module with a shared JavaPlugin, an explicit feature data directory, and a shared CoreProtect hook. Existing server-facing identifiers and data formats remain unchanged in this release. See docs/architecture.md for the embedding contract and migration constraints.

Ore Coverage

The runtime logic currently tracks these ore families:

  • Coal: COAL_ORE, DEEPSLATE_COAL_ORE
  • Iron: IRON_ORE, DEEPSLATE_IRON_ORE, RAW_IRON_BLOCK
  • Copper: COPPER_ORE, DEEPSLATE_COPPER_ORE, RAW_COPPER_BLOCK
  • Gold: GOLD_ORE, DEEPSLATE_GOLD_ORE
  • Redstone: REDSTONE_ORE, DEEPSLATE_REDSTONE_ORE
  • Emerald: EMERALD_ORE, DEEPSLATE_EMERALD_ORE
  • Lapis: LAPIS_ORE, DEEPSLATE_LAPIS_ORE
  • Diamond: DIAMOND_ORE, DEEPSLATE_DIAMOND_ORE
  • Nether gold family: NETHER_GOLD_ORE, GILDED_BLACKSTONE
  • Nether quartz: NETHER_QUARTZ_ORE
  • Ancient debris: ANCIENT_DEBRIS

RAW_GOLD_BLOCK is intentionally not tracked.

Build

Build with Gradle using the required Java 25.0.4 JDK:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-25.0.4.jdk/Contents/Home \
gradle clean build printBuildConfig --warning-mode all

Release metadata is centralized in version.properties. Update the semantic version and build number there exactly once for a release; repeated build and verification runs then reproduce the same artifact version instead of silently incrementing it.

gradle check includes verifyReleaseMetadata, which checks the packaged plugin.yml, generated xrayheuristics/build-info.properties, README, installation/integration docs, and public-docs manifest for stale version, build, Java, Paper API, and channel metadata.

Official references used for the target are the Paper project setup guide and Paper 26.2 API Javadocs.

Installation Summary

  1. Install Paper with Java 25.
  2. Install CoreProtect before this plugin.
  3. Place the built jar in your server's plugins/ folder.
  4. Start the server so plugins/1MB-XRayHeuristics/ and its generated files are created.
  5. Verify the load with version xrayheuristics, /xrayer info, and /xrayer debug.

Detailed steps are in docs/installation.md.

Integrations

  • Required runtime dependency: CoreProtect
  • Optional storage integration: MySQL
  • No verified PlaceholderAPI expansion registration
  • No required dependency on CMI, LuckPerms, Vault, or PlaceholderAPI for the core plugin behavior

See docs/integrations.md for details.

Credits

  • Original plugin authors: __Mithrandir__ and Greymagic27
  • 1MoreBlock maintenance, packaging, compatibility work, and testing: mrfloris
  • Thanks to everyone who contributed testing and follow-up fixes across the 1MoreBlock Anti-XRay plugin line

About

Fork (tnx greymagic27) for 1MoreBlock.com Paper 1.21.8 / Java 21+ - Detects and punishes xrayers in mining situations.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages