Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
01ac52d
feat: add i18n infrastructure (Phase 0)
derrickmehaffy Mar 9, 2026
5d71da8
feat: migrate faction management and claim commands to i18n keys (Pha…
derrickmehaffy Mar 9, 2026
18398b4
feat: migrate member commands to i18n keys (Phase 1b)
derrickmehaffy Mar 9, 2026
7f47fe9
feat: migrate territory and teleport commands to i18n keys (Phase 1c)
derrickmehaffy Mar 9, 2026
ecb1e07
feat: migrate relation, social, info, and economy commands to i18n ke…
derrickmehaffy Mar 9, 2026
fb6dd72
feat: migrate UI commands and ProtectionChecker to i18n keys (Phase 1e)
derrickmehaffy Mar 9, 2026
8336c15
feat: migrate AnnouncementManager, TeleportManager, ChatManager to i1…
derrickmehaffy Mar 9, 2026
06be789
feat: add help system markdown-to-lang build pipeline (Phase 2)
derrickmehaffy Mar 9, 2026
9ea102a
chore: exclude build package from gitignore pattern
derrickmehaffy Mar 9, 2026
5ad45e0
feat: localize nav system, shared pages, and modal pages (Phase 3a)
derrickmehaffy Mar 9, 2026
6cf3396
feat: localize FactionDashboardPage and FactionMainPage (Phase 3b)
derrickmehaffy Mar 9, 2026
18ee92c
feat: localize Members, Browser, Leaderboard, and PlayerInfo pages (P…
derrickmehaffy Mar 9, 2026
55a37c2
feat: localize Relations, Settings, and Modules pages (Phase 3d)
derrickmehaffy Mar 9, 2026
b8d955c
feat: localize Treasury pages (Phase 3e)
derrickmehaffy Mar 9, 2026
96a3629
feat: localize confirmation, logs, chat, invites, and map pages (Phas…
derrickmehaffy Mar 9, 2026
b572584
feat: localize create faction and new player pages (Phase 3g)
derrickmehaffy Mar 9, 2026
7867f74
feat: localize admin GUI pages (Phase 4)
derrickmehaffy Mar 10, 2026
d3267e9
feat: add Player Settings GUI with language and notification preferen…
derrickmehaffy Mar 10, 2026
20644cc
feat: add Spanish translations, locale stubs, and translator workflow…
derrickmehaffy Mar 10, 2026
894a7b3
fix: redesign Player Settings UI and fix nav bar placement
derrickmehaffy Mar 10, 2026
e62e2d9
feat: use native locale display names and add es-ES to language selector
derrickmehaffy Mar 10, 2026
028e53e
feat: localize all GUI pages with i18n support
derrickmehaffy Mar 10, 2026
9bc2c0f
feat: localize admin zone wizard, unclaim confirm, and type modal pages
derrickmehaffy Mar 10, 2026
27346d8
fix: admin GUI crash, help i18n resolution, and dropdown display names
derrickmehaffy Mar 10, 2026
ea2da8e
fix: persist player preferences to JSON storage
derrickmehaffy Mar 10, 2026
c14c7c0
fix: disable Power Notifications toggle (not yet wired up)
derrickmehaffy Mar 10, 2026
3bcafdf
refactor: relocate help markdown to Server/Languages and remove stale…
derrickmehaffy Mar 10, 2026
f6b5bc5
feat: restructure admin test commands and extend help markdown syntax
derrickmehaffy Mar 10, 2026
b31839e
feat: add markdown rendering test page (/f admin test md)
derrickmehaffy Mar 10, 2026
e58857a
docs: add help markdown style guide and move translation guide to docs/
derrickmehaffy Mar 10, 2026
4e8f0d0
feat: add new UI Gallery elements to button test page
derrickmehaffy Mar 10, 2026
5d878ae
fix: pin markdown test page title bar to top of container
derrickmehaffy Mar 10, 2026
e3b26aa
fix: remove invalid #Title/#Content slots from Panel and SimpleContainer
derrickmehaffy Mar 10, 2026
0d8c8e7
fix: enable text wrapping and vertical centering in help templates
derrickmehaffy Mar 10, 2026
43188f5
feat: add table support to help markdown system
derrickmehaffy Mar 10, 2026
f818927
fix: improve table visual styling with GitHub-style grid borders
derrickmehaffy Mar 10, 2026
c106a59
feat: add admin help infrastructure with category filtering
derrickmehaffy Mar 10, 2026
65d5e1d
feat: rewrite player help categories 1-4 (en-US) with enhanced format…
derrickmehaffy Mar 10, 2026
82fe5f8
feat: rewrite player help categories 5-7 (en-US), add spawn protectio…
derrickmehaffy Mar 10, 2026
112120f
feat: add comprehensive admin help content (en-US) — 18 topics across…
derrickmehaffy Mar 10, 2026
a0d2000
feat: rewrite Spanish player help translations (es-ES) — 25 topics
derrickmehaffy Mar 10, 2026
436c124
feat: add Spanish admin help translations (es-ES), remove placeholder…
derrickmehaffy Mar 10, 2026
2e276cd
fix: strip inline markdown markers, join continuation lines, fix inva…
derrickmehaffy Mar 10, 2026
4492fba
feat: table rendering with inline rows, rich text, and help window re…
derrickmehaffy Mar 11, 2026
7847e4d
fix: remove duplicate gui.cancel key in admin lang files
derrickmehaffy Mar 11, 2026
7281969
feat: localize GUI labels for es-ES — browse stats, log time/types, s…
derrickmehaffy Mar 11, 2026
e7dc944
feat(i18n): localize admin GUI pages, entry templates, and zone flag …
derrickmehaffy Mar 11, 2026
1eb62c5
feat(i18n): localize player member and browser entry templates
derrickmehaffy Mar 11, 2026
feab965
feat(i18n): localize admin member entries and player info page
derrickmehaffy Mar 11, 2026
0d20d6b
feat(i18n): localize player invite and relation entry templates
derrickmehaffy Mar 11, 2026
2b6a713
feat(i18n): localize all hardcoded Java strings in GUI pages
derrickmehaffy Mar 11, 2026
073e8ac
feat(i18n): localize admin nav bar title and economy entry buttons
derrickmehaffy Mar 11, 2026
3efaa51
feat(i18n): localize remaining hardcoded fallbacks and format strings
derrickmehaffy Mar 11, 2026
d7078dd
fix(i18n): resolve Spanish truncation, crashes, and missing translati…
derrickmehaffy Mar 11, 2026
839de89
feat: add SimpleClaims data importer
derrickmehaffy Mar 12, 2026
9d8bab7
Merge branch 'releases/0.12.0' into feat/simpleclaims-import
derrickmehaffy Mar 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,7 @@
import com.hyperfactions.importer.ElbaphFactionsImporter;
import com.hyperfactions.importer.HyFactionsImporter;
import com.hyperfactions.importer.ImportResult;
import com.hyperfactions.importer.SimpleClaimsImporter;
import com.hyperfactions.util.CommandHelp;
import com.hyperfactions.util.HelpFormatter;
import com.hypixel.hytale.server.core.Message;
Expand All@@ -17,7 +18,7 @@
import java.util.concurrent.CompletableFuture;

/**
* Handles /f admin import commands (hyfactions, elbaphfactions).
* Handles /f admin import commands (hyfactions, elbaphfactions, simpleclaims).
*/
public class AdminImportHandler {

Expand DownExpand Up@@ -59,6 +60,7 @@ public void handleAdminImport(CommandContext ctx, String[] args) {
switch (subCmd) {
case "hyfactions" -> handleImportHyFactions(ctx, subArgs);
case "elbaphfactions" -> handleImportElbaphFactions(ctx, subArgs);
case "simpleclaims" -> handleImportSimpleClaims(ctx, subArgs);
case "help", "?" -> showImportHelp(ctx);
default -> {
ctx.sendMessage(prefix().insert(msg("Unknown import source: " + subCmd, COLOR_RED)));
Expand All@@ -73,6 +75,8 @@ private void showImportHelp(CommandContext ctx) {
commands.add(new CommandHelp(" Default path: mods/Kaws_Hyfaction", ""));
commands.add(new CommandHelp("/f admin import elbaphfactions [path] [flags]", "Import from ElbaphFactions mod"));
commands.add(new CommandHelp(" Default path: mods/ElbaphFactions", ""));
commands.add(new CommandHelp("/f admin import simpleclaims [path] [flags]", "Import from SimpleClaims mod"));
commands.add(new CommandHelp(" Default path: Server/universe/SimpleClaims", ""));
commands.add(new CommandHelp(" Flags:", ""));
commands.add(new CommandHelp(" --dry-run / -n", "Simulate without changes"));
commands.add(new CommandHelp(" --overwrite", "Replace existing factions"));
Expand DownExpand Up@@ -187,6 +191,56 @@ public void handleImportElbaphFactions(CommandContext ctx, String[] args) {
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "ElbaphFactions"));
}

/** Handles import simple claims. */
public void handleImportSimpleClaims(CommandContext ctx, String[] args) {
// Parse path (optional - default to Server/universe/SimpleClaims)
String pathStr = "Server/universe/SimpleClaims";
int flagStartIndex = 0;

if (args.length > 0 && !args[0].startsWith("-")) {
pathStr = args[0];
flagStartIndex = 1;
}

Path dataPath = Paths.get(pathStr);

boolean dryRun = false;
boolean overwrite = false;
boolean skipPower = false;

for (int i = flagStartIndex; i < args.length; i++) {
String flag = args[i].toLowerCase();
switch (flag) {
case "--dry-run", "-n" -> dryRun = true;
case "--overwrite" -> overwrite = true;
case "--no-power" -> skipPower = true;
default -> throw new IllegalStateException("Unexpected value");
}
}

ctx.sendMessage(prefix().insert(msg("Importing from SimpleClaims...", COLOR_YELLOW)));
ctx.sendMessage(msg(" Path: " + dataPath, COLOR_GRAY));
if (dryRun) {
ctx.sendMessage(msg(" (Dry run - no changes will be made)", COLOR_GRAY));
}

SimpleClaimsImporter importer = new SimpleClaimsImporter(
hyperFactions.getFactionManager(),
hyperFactions.getClaimManager(),
hyperFactions.getZoneManager(),
hyperFactions.getPowerManager(),
hyperFactions.getBackupManager()
);

importer.setDryRun(dryRun);
importer.setOverwrite(overwrite);
importer.setSkipPower(skipPower);

final boolean finalDryRun = dryRun;
CompletableFuture.supplyAsync(() -> importer.importFrom(dataPath))
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "SimpleClaims"));
}

private void reportImportResult(CommandContext ctx, ImportResult result, boolean dryRun, String sourceName) {
if (!result.hasErrors()) {
ctx.sendMessage(prefix().insert(msg(sourceName + " import " + (dryRun ? "simulation " : "") + "complete!", COLOR_GREEN)));
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
01ac52d
feat: add i18n infrastructure (Phase 0)
derrickmehaffy Mar 9, 2026
5d71da8
feat: migrate faction management and claim commands to i18n keys (Pha…
derrickmehaffy Mar 9, 2026
18398b4
feat: migrate member commands to i18n keys (Phase 1b)
derrickmehaffy Mar 9, 2026
7f47fe9
feat: migrate territory and teleport commands to i18n keys (Phase 1c)
derrickmehaffy Mar 9, 2026
ecb1e07
feat: migrate relation, social, info, and economy commands to i18n ke…
derrickmehaffy Mar 9, 2026
fb6dd72
feat: migrate UI commands and ProtectionChecker to i18n keys (Phase 1e)
derrickmehaffy Mar 9, 2026
8336c15
feat: migrate AnnouncementManager, TeleportManager, ChatManager to i1…
derrickmehaffy Mar 9, 2026
06be789
feat: add help system markdown-to-lang build pipeline (Phase 2)
derrickmehaffy Mar 9, 2026
9ea102a
chore: exclude build package from gitignore pattern
derrickmehaffy Mar 9, 2026
5ad45e0
feat: localize nav system, shared pages, and modal pages (Phase 3a)
derrickmehaffy Mar 9, 2026
6cf3396
feat: localize FactionDashboardPage and FactionMainPage (Phase 3b)
derrickmehaffy Mar 9, 2026
18ee92c
feat: localize Members, Browser, Leaderboard, and PlayerInfo pages (P…
derrickmehaffy Mar 9, 2026
55a37c2
feat: localize Relations, Settings, and Modules pages (Phase 3d)
derrickmehaffy Mar 9, 2026
b8d955c
feat: localize Treasury pages (Phase 3e)
derrickmehaffy Mar 9, 2026
96a3629
feat: localize confirmation, logs, chat, invites, and map pages (Phas…
derrickmehaffy Mar 9, 2026
b572584
feat: localize create faction and new player pages (Phase 3g)
derrickmehaffy Mar 9, 2026
7867f74
feat: localize admin GUI pages (Phase 4)
derrickmehaffy Mar 10, 2026
d3267e9
feat: add Player Settings GUI with language and notification preferen…
derrickmehaffy Mar 10, 2026
20644cc
feat: add Spanish translations, locale stubs, and translator workflow…
derrickmehaffy Mar 10, 2026
894a7b3
fix: redesign Player Settings UI and fix nav bar placement
derrickmehaffy Mar 10, 2026
e62e2d9
feat: use native locale display names and add es-ES to language selector
derrickmehaffy Mar 10, 2026
028e53e
feat: localize all GUI pages with i18n support
derrickmehaffy Mar 10, 2026
9bc2c0f
feat: localize admin zone wizard, unclaim confirm, and type modal pages
derrickmehaffy Mar 10, 2026
27346d8
fix: admin GUI crash, help i18n resolution, and dropdown display names
derrickmehaffy Mar 10, 2026
ea2da8e
fix: persist player preferences to JSON storage
derrickmehaffy Mar 10, 2026
c14c7c0
fix: disable Power Notifications toggle (not yet wired up)
derrickmehaffy Mar 10, 2026
3bcafdf
refactor: relocate help markdown to Server/Languages and remove stale…
derrickmehaffy Mar 10, 2026
f6b5bc5
feat: restructure admin test commands and extend help markdown syntax
derrickmehaffy Mar 10, 2026
b31839e
feat: add markdown rendering test page (/f admin test md)
derrickmehaffy Mar 10, 2026
e58857a
docs: add help markdown style guide and move translation guide to docs/
derrickmehaffy Mar 10, 2026
4e8f0d0
feat: add new UI Gallery elements to button test page
derrickmehaffy Mar 10, 2026
5d878ae
fix: pin markdown test page title bar to top of container
derrickmehaffy Mar 10, 2026
e3b26aa
fix: remove invalid #Title/#Content slots from Panel and SimpleContainer
derrickmehaffy Mar 10, 2026
0d8c8e7
fix: enable text wrapping and vertical centering in help templates
derrickmehaffy Mar 10, 2026
43188f5
feat: add table support to help markdown system
derrickmehaffy Mar 10, 2026
f818927
fix: improve table visual styling with GitHub-style grid borders
derrickmehaffy Mar 10, 2026
c106a59
feat: add admin help infrastructure with category filtering
derrickmehaffy Mar 10, 2026
65d5e1d
feat: rewrite player help categories 1-4 (en-US) with enhanced format…
derrickmehaffy Mar 10, 2026
82fe5f8
feat: rewrite player help categories 5-7 (en-US), add spawn protectio…
derrickmehaffy Mar 10, 2026
112120f
feat: add comprehensive admin help content (en-US) — 18 topics across…
derrickmehaffy Mar 10, 2026
a0d2000
feat: rewrite Spanish player help translations (es-ES) — 25 topics
derrickmehaffy Mar 10, 2026
436c124
feat: add Spanish admin help translations (es-ES), remove placeholder…
derrickmehaffy Mar 10, 2026
2e276cd
fix: strip inline markdown markers, join continuation lines, fix inva…
derrickmehaffy Mar 10, 2026
4492fba
feat: table rendering with inline rows, rich text, and help window re…
derrickmehaffy Mar 11, 2026
7847e4d
fix: remove duplicate gui.cancel key in admin lang files
derrickmehaffy Mar 11, 2026
7281969
feat: localize GUI labels for es-ES — browse stats, log time/types, s…
derrickmehaffy Mar 11, 2026
e7dc944
feat(i18n): localize admin GUI pages, entry templates, and zone flag …
derrickmehaffy Mar 11, 2026
1eb62c5
feat(i18n): localize player member and browser entry templates
derrickmehaffy Mar 11, 2026
feab965
feat(i18n): localize admin member entries and player info page
derrickmehaffy Mar 11, 2026
0d20d6b
feat(i18n): localize player invite and relation entry templates
derrickmehaffy Mar 11, 2026
2b6a713
feat(i18n): localize all hardcoded Java strings in GUI pages
derrickmehaffy Mar 11, 2026
073e8ac
feat(i18n): localize admin nav bar title and economy entry buttons
derrickmehaffy Mar 11, 2026
3efaa51
feat(i18n): localize remaining hardcoded fallbacks and format strings
derrickmehaffy Mar 11, 2026
d7078dd
fix(i18n): resolve Spanish truncation, crashes, and missing translati…
derrickmehaffy Mar 11, 2026
839de89
feat: add SimpleClaims data importer
derrickmehaffy Mar 12, 2026
9d8bab7
Merge branch 'releases/0.12.0' into feat/simpleclaims-import
derrickmehaffy Mar 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,7 @@
import com.hyperfactions.importer.ElbaphFactionsImporter;
import com.hyperfactions.importer.HyFactionsImporter;
import com.hyperfactions.importer.ImportResult;
import com.hyperfactions.importer.SimpleClaimsImporter;
import com.hyperfactions.util.CommandHelp;
import com.hyperfactions.util.HelpFormatter;
import com.hypixel.hytale.server.core.Message;
Expand All@@ -17,7 +18,7 @@
import java.util.concurrent.CompletableFuture;

/**
* Handles /f admin import commands (hyfactions, elbaphfactions).
* Handles /f admin import commands (hyfactions, elbaphfactions, simpleclaims).
*/
public class AdminImportHandler {

Expand DownExpand Up@@ -59,6 +60,7 @@ public void handleAdminImport(CommandContext ctx, String[] args) {
switch (subCmd) {
case "hyfactions" -> handleImportHyFactions(ctx, subArgs);
case "elbaphfactions" -> handleImportElbaphFactions(ctx, subArgs);
case "simpleclaims" -> handleImportSimpleClaims(ctx, subArgs);
case "help", "?" -> showImportHelp(ctx);
default -> {
ctx.sendMessage(prefix().insert(msg("Unknown import source: " + subCmd, COLOR_RED)));
Expand All@@ -73,6 +75,8 @@ private void showImportHelp(CommandContext ctx) {
commands.add(new CommandHelp(" Default path: mods/Kaws_Hyfaction", ""));
commands.add(new CommandHelp("/f admin import elbaphfactions [path] [flags]", "Import from ElbaphFactions mod"));
commands.add(new CommandHelp(" Default path: mods/ElbaphFactions", ""));
commands.add(new CommandHelp("/f admin import simpleclaims [path] [flags]", "Import from SimpleClaims mod"));
commands.add(new CommandHelp(" Default path: Server/universe/SimpleClaims", ""));
commands.add(new CommandHelp(" Flags:", ""));
commands.add(new CommandHelp(" --dry-run / -n", "Simulate without changes"));
commands.add(new CommandHelp(" --overwrite", "Replace existing factions"));
Expand DownExpand Up@@ -187,6 +191,56 @@ public void handleImportElbaphFactions(CommandContext ctx, String[] args) {
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "ElbaphFactions"));
}

/** Handles import simple claims. */
public void handleImportSimpleClaims(CommandContext ctx, String[] args) {
// Parse path (optional - default to Server/universe/SimpleClaims)
String pathStr = "Server/universe/SimpleClaims";
int flagStartIndex = 0;

if (args.length > 0 && !args[0].startsWith("-")) {
pathStr = args[0];
flagStartIndex = 1;
}

Path dataPath = Paths.get(pathStr);

boolean dryRun = false;
boolean overwrite = false;
boolean skipPower = false;

for (int i = flagStartIndex; i < args.length; i++) {
String flag = args[i].toLowerCase();
switch (flag) {
case "--dry-run", "-n" -> dryRun = true;
case "--overwrite" -> overwrite = true;
case "--no-power" -> skipPower = true;
default -> throw new IllegalStateException("Unexpected value");
}
}

ctx.sendMessage(prefix().insert(msg("Importing from SimpleClaims...", COLOR_YELLOW)));
ctx.sendMessage(msg(" Path: " + dataPath, COLOR_GRAY));
if (dryRun) {
ctx.sendMessage(msg(" (Dry run - no changes will be made)", COLOR_GRAY));
}

SimpleClaimsImporter importer = new SimpleClaimsImporter(
hyperFactions.getFactionManager(),
hyperFactions.getClaimManager(),
hyperFactions.getZoneManager(),
hyperFactions.getPowerManager(),
hyperFactions.getBackupManager()
);

importer.setDryRun(dryRun);
importer.setOverwrite(overwrite);
importer.setSkipPower(skipPower);

final boolean finalDryRun = dryRun;
CompletableFuture.supplyAsync(() -> importer.importFrom(dataPath))
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "SimpleClaims"));
}

private void reportImportResult(CommandContext ctx, ImportResult result, boolean dryRun, String sourceName) {
if (!result.hasErrors()) {
ctx.sendMessage(prefix().insert(msg(sourceName + " import " + (dryRun ? "simulation " : "") + "complete!", COLOR_GREEN)));
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
01ac52d
feat: add i18n infrastructure (Phase 0)
derrickmehaffy Mar 9, 2026
5d71da8
feat: migrate faction management and claim commands to i18n keys (Pha…
derrickmehaffy Mar 9, 2026
18398b4
feat: migrate member commands to i18n keys (Phase 1b)
derrickmehaffy Mar 9, 2026
7f47fe9
feat: migrate territory and teleport commands to i18n keys (Phase 1c)
derrickmehaffy Mar 9, 2026
ecb1e07
feat: migrate relation, social, info, and economy commands to i18n ke…
derrickmehaffy Mar 9, 2026
fb6dd72
feat: migrate UI commands and ProtectionChecker to i18n keys (Phase 1e)
derrickmehaffy Mar 9, 2026
8336c15
feat: migrate AnnouncementManager, TeleportManager, ChatManager to i1…
derrickmehaffy Mar 9, 2026
06be789
feat: add help system markdown-to-lang build pipeline (Phase 2)
derrickmehaffy Mar 9, 2026
9ea102a
chore: exclude build package from gitignore pattern
derrickmehaffy Mar 9, 2026
5ad45e0
feat: localize nav system, shared pages, and modal pages (Phase 3a)
derrickmehaffy Mar 9, 2026
6cf3396
feat: localize FactionDashboardPage and FactionMainPage (Phase 3b)
derrickmehaffy Mar 9, 2026
18ee92c
feat: localize Members, Browser, Leaderboard, and PlayerInfo pages (P…
derrickmehaffy Mar 9, 2026
55a37c2
feat: localize Relations, Settings, and Modules pages (Phase 3d)
derrickmehaffy Mar 9, 2026
b8d955c
feat: localize Treasury pages (Phase 3e)
derrickmehaffy Mar 9, 2026
96a3629
feat: localize confirmation, logs, chat, invites, and map pages (Phas…
derrickmehaffy Mar 9, 2026
b572584
feat: localize create faction and new player pages (Phase 3g)
derrickmehaffy Mar 9, 2026
7867f74
feat: localize admin GUI pages (Phase 4)
derrickmehaffy Mar 10, 2026
d3267e9
feat: add Player Settings GUI with language and notification preferen…
derrickmehaffy Mar 10, 2026
20644cc
feat: add Spanish translations, locale stubs, and translator workflow…
derrickmehaffy Mar 10, 2026
894a7b3
fix: redesign Player Settings UI and fix nav bar placement
derrickmehaffy Mar 10, 2026
e62e2d9
feat: use native locale display names and add es-ES to language selector
derrickmehaffy Mar 10, 2026
028e53e
feat: localize all GUI pages with i18n support
derrickmehaffy Mar 10, 2026
9bc2c0f
feat: localize admin zone wizard, unclaim confirm, and type modal pages
derrickmehaffy Mar 10, 2026
27346d8
fix: admin GUI crash, help i18n resolution, and dropdown display names
derrickmehaffy Mar 10, 2026
ea2da8e
fix: persist player preferences to JSON storage
derrickmehaffy Mar 10, 2026
c14c7c0
fix: disable Power Notifications toggle (not yet wired up)
derrickmehaffy Mar 10, 2026
3bcafdf
refactor: relocate help markdown to Server/Languages and remove stale…
derrickmehaffy Mar 10, 2026
f6b5bc5
feat: restructure admin test commands and extend help markdown syntax
derrickmehaffy Mar 10, 2026
b31839e
feat: add markdown rendering test page (/f admin test md)
derrickmehaffy Mar 10, 2026
e58857a
docs: add help markdown style guide and move translation guide to docs/
derrickmehaffy Mar 10, 2026
4e8f0d0
feat: add new UI Gallery elements to button test page
derrickmehaffy Mar 10, 2026
5d878ae
fix: pin markdown test page title bar to top of container
derrickmehaffy Mar 10, 2026
e3b26aa
fix: remove invalid #Title/#Content slots from Panel and SimpleContainer
derrickmehaffy Mar 10, 2026
0d8c8e7
fix: enable text wrapping and vertical centering in help templates
derrickmehaffy Mar 10, 2026
43188f5
feat: add table support to help markdown system
derrickmehaffy Mar 10, 2026
f818927
fix: improve table visual styling with GitHub-style grid borders
derrickmehaffy Mar 10, 2026
c106a59
feat: add admin help infrastructure with category filtering
derrickmehaffy Mar 10, 2026
65d5e1d
feat: rewrite player help categories 1-4 (en-US) with enhanced format…
derrickmehaffy Mar 10, 2026
82fe5f8
feat: rewrite player help categories 5-7 (en-US), add spawn protectio…
derrickmehaffy Mar 10, 2026
112120f
feat: add comprehensive admin help content (en-US) — 18 topics across…
derrickmehaffy Mar 10, 2026
a0d2000
feat: rewrite Spanish player help translations (es-ES) — 25 topics
derrickmehaffy Mar 10, 2026
436c124
feat: add Spanish admin help translations (es-ES), remove placeholder…
derrickmehaffy Mar 10, 2026
2e276cd
fix: strip inline markdown markers, join continuation lines, fix inva…
derrickmehaffy Mar 10, 2026
4492fba
feat: table rendering with inline rows, rich text, and help window re…
derrickmehaffy Mar 11, 2026
7847e4d
fix: remove duplicate gui.cancel key in admin lang files
derrickmehaffy Mar 11, 2026
7281969
feat: localize GUI labels for es-ES — browse stats, log time/types, s…
derrickmehaffy Mar 11, 2026
e7dc944
feat(i18n): localize admin GUI pages, entry templates, and zone flag …
derrickmehaffy Mar 11, 2026
1eb62c5
feat(i18n): localize player member and browser entry templates
derrickmehaffy Mar 11, 2026
feab965
feat(i18n): localize admin member entries and player info page
derrickmehaffy Mar 11, 2026
0d20d6b
feat(i18n): localize player invite and relation entry templates
derrickmehaffy Mar 11, 2026
2b6a713
feat(i18n): localize all hardcoded Java strings in GUI pages
derrickmehaffy Mar 11, 2026
073e8ac
feat(i18n): localize admin nav bar title and economy entry buttons
derrickmehaffy Mar 11, 2026
3efaa51
feat(i18n): localize remaining hardcoded fallbacks and format strings
derrickmehaffy Mar 11, 2026
d7078dd
fix(i18n): resolve Spanish truncation, crashes, and missing translati…
derrickmehaffy Mar 11, 2026
839de89
feat: add SimpleClaims data importer
derrickmehaffy Mar 12, 2026
9d8bab7
Merge branch 'releases/0.12.0' into feat/simpleclaims-import
derrickmehaffy Mar 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,7 @@
import com.hyperfactions.importer.ElbaphFactionsImporter;
import com.hyperfactions.importer.HyFactionsImporter;
import com.hyperfactions.importer.ImportResult;
import com.hyperfactions.importer.SimpleClaimsImporter;
import com.hyperfactions.util.CommandHelp;
import com.hyperfactions.util.HelpFormatter;
import com.hypixel.hytale.server.core.Message;
Expand All@@ -17,7 +18,7 @@
import java.util.concurrent.CompletableFuture;

/**
* Handles /f admin import commands (hyfactions, elbaphfactions).
* Handles /f admin import commands (hyfactions, elbaphfactions, simpleclaims).
*/
public class AdminImportHandler {

Expand DownExpand Up@@ -59,6 +60,7 @@ public void handleAdminImport(CommandContext ctx, String[] args) {
switch (subCmd) {
case "hyfactions" -> handleImportHyFactions(ctx, subArgs);
case "elbaphfactions" -> handleImportElbaphFactions(ctx, subArgs);
case "simpleclaims" -> handleImportSimpleClaims(ctx, subArgs);
case "help", "?" -> showImportHelp(ctx);
default -> {
ctx.sendMessage(prefix().insert(msg("Unknown import source: " + subCmd, COLOR_RED)));
Expand All@@ -73,6 +75,8 @@ private void showImportHelp(CommandContext ctx) {
commands.add(new CommandHelp(" Default path: mods/Kaws_Hyfaction", ""));
commands.add(new CommandHelp("/f admin import elbaphfactions [path] [flags]", "Import from ElbaphFactions mod"));
commands.add(new CommandHelp(" Default path: mods/ElbaphFactions", ""));
commands.add(new CommandHelp("/f admin import simpleclaims [path] [flags]", "Import from SimpleClaims mod"));
commands.add(new CommandHelp(" Default path: Server/universe/SimpleClaims", ""));
commands.add(new CommandHelp(" Flags:", ""));
commands.add(new CommandHelp(" --dry-run / -n", "Simulate without changes"));
commands.add(new CommandHelp(" --overwrite", "Replace existing factions"));
Expand DownExpand Up@@ -187,6 +191,56 @@ public void handleImportElbaphFactions(CommandContext ctx, String[] args) {
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "ElbaphFactions"));
}

/** Handles import simple claims. */
public void handleImportSimpleClaims(CommandContext ctx, String[] args) {
// Parse path (optional - default to Server/universe/SimpleClaims)
String pathStr = "Server/universe/SimpleClaims";
int flagStartIndex = 0;

if (args.length > 0 && !args[0].startsWith("-")) {
pathStr = args[0];
flagStartIndex = 1;
}

Path dataPath = Paths.get(pathStr);

boolean dryRun = false;
boolean overwrite = false;
boolean skipPower = false;

for (int i = flagStartIndex; i < args.length; i++) {
String flag = args[i].toLowerCase();
switch (flag) {
case "--dry-run", "-n" -> dryRun = true;
case "--overwrite" -> overwrite = true;
case "--no-power" -> skipPower = true;
default -> throw new IllegalStateException("Unexpected value");
}
}

ctx.sendMessage(prefix().insert(msg("Importing from SimpleClaims...", COLOR_YELLOW)));
ctx.sendMessage(msg(" Path: " + dataPath, COLOR_GRAY));
if (dryRun) {
ctx.sendMessage(msg(" (Dry run - no changes will be made)", COLOR_GRAY));
}

SimpleClaimsImporter importer = new SimpleClaimsImporter(
hyperFactions.getFactionManager(),
hyperFactions.getClaimManager(),
hyperFactions.getZoneManager(),
hyperFactions.getPowerManager(),
hyperFactions.getBackupManager()
);

importer.setDryRun(dryRun);
importer.setOverwrite(overwrite);
importer.setSkipPower(skipPower);

final boolean finalDryRun = dryRun;
CompletableFuture.supplyAsync(() -> importer.importFrom(dataPath))
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "SimpleClaims"));
}

private void reportImportResult(CommandContext ctx, ImportResult result, boolean dryRun, String sourceName) {
if (!result.hasErrors()) {
ctx.sendMessage(prefix().insert(msg(sourceName + " import " + (dryRun ? "simulation " : "") + "complete!", COLOR_GREEN)));
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
01ac52d
feat: add i18n infrastructure (Phase 0)
derrickmehaffy Mar 9, 2026
5d71da8
feat: migrate faction management and claim commands to i18n keys (Pha…
derrickmehaffy Mar 9, 2026
18398b4
feat: migrate member commands to i18n keys (Phase 1b)
derrickmehaffy Mar 9, 2026
7f47fe9
feat: migrate territory and teleport commands to i18n keys (Phase 1c)
derrickmehaffy Mar 9, 2026
ecb1e07
feat: migrate relation, social, info, and economy commands to i18n ke…
derrickmehaffy Mar 9, 2026
fb6dd72
feat: migrate UI commands and ProtectionChecker to i18n keys (Phase 1e)
derrickmehaffy Mar 9, 2026
8336c15
feat: migrate AnnouncementManager, TeleportManager, ChatManager to i1…
derrickmehaffy Mar 9, 2026
06be789
feat: add help system markdown-to-lang build pipeline (Phase 2)
derrickmehaffy Mar 9, 2026
9ea102a
chore: exclude build package from gitignore pattern
derrickmehaffy Mar 9, 2026
5ad45e0
feat: localize nav system, shared pages, and modal pages (Phase 3a)
derrickmehaffy Mar 9, 2026
6cf3396
feat: localize FactionDashboardPage and FactionMainPage (Phase 3b)
derrickmehaffy Mar 9, 2026
18ee92c
feat: localize Members, Browser, Leaderboard, and PlayerInfo pages (P…
derrickmehaffy Mar 9, 2026
55a37c2
feat: localize Relations, Settings, and Modules pages (Phase 3d)
derrickmehaffy Mar 9, 2026
b8d955c
feat: localize Treasury pages (Phase 3e)
derrickmehaffy Mar 9, 2026
96a3629
feat: localize confirmation, logs, chat, invites, and map pages (Phas…
derrickmehaffy Mar 9, 2026
b572584
feat: localize create faction and new player pages (Phase 3g)
derrickmehaffy Mar 9, 2026
7867f74
feat: localize admin GUI pages (Phase 4)
derrickmehaffy Mar 10, 2026
d3267e9
feat: add Player Settings GUI with language and notification preferen…
derrickmehaffy Mar 10, 2026
20644cc
feat: add Spanish translations, locale stubs, and translator workflow…
derrickmehaffy Mar 10, 2026
894a7b3
fix: redesign Player Settings UI and fix nav bar placement
derrickmehaffy Mar 10, 2026
e62e2d9
feat: use native locale display names and add es-ES to language selector
derrickmehaffy Mar 10, 2026
028e53e
feat: localize all GUI pages with i18n support
derrickmehaffy Mar 10, 2026
9bc2c0f
feat: localize admin zone wizard, unclaim confirm, and type modal pages
derrickmehaffy Mar 10, 2026
27346d8
fix: admin GUI crash, help i18n resolution, and dropdown display names
derrickmehaffy Mar 10, 2026
ea2da8e
fix: persist player preferences to JSON storage
derrickmehaffy Mar 10, 2026
c14c7c0
fix: disable Power Notifications toggle (not yet wired up)
derrickmehaffy Mar 10, 2026
3bcafdf
refactor: relocate help markdown to Server/Languages and remove stale…
derrickmehaffy Mar 10, 2026
f6b5bc5
feat: restructure admin test commands and extend help markdown syntax
derrickmehaffy Mar 10, 2026
b31839e
feat: add markdown rendering test page (/f admin test md)
derrickmehaffy Mar 10, 2026
e58857a
docs: add help markdown style guide and move translation guide to docs/
derrickmehaffy Mar 10, 2026
4e8f0d0
feat: add new UI Gallery elements to button test page
derrickmehaffy Mar 10, 2026
5d878ae
fix: pin markdown test page title bar to top of container
derrickmehaffy Mar 10, 2026
e3b26aa
fix: remove invalid #Title/#Content slots from Panel and SimpleContainer
derrickmehaffy Mar 10, 2026
0d8c8e7
fix: enable text wrapping and vertical centering in help templates
derrickmehaffy Mar 10, 2026
43188f5
feat: add table support to help markdown system
derrickmehaffy Mar 10, 2026
f818927
fix: improve table visual styling with GitHub-style grid borders
derrickmehaffy Mar 10, 2026
c106a59
feat: add admin help infrastructure with category filtering
derrickmehaffy Mar 10, 2026
65d5e1d
feat: rewrite player help categories 1-4 (en-US) with enhanced format…
derrickmehaffy Mar 10, 2026
82fe5f8
feat: rewrite player help categories 5-7 (en-US), add spawn protectio…
derrickmehaffy Mar 10, 2026
112120f
feat: add comprehensive admin help content (en-US) — 18 topics across…
derrickmehaffy Mar 10, 2026
a0d2000
feat: rewrite Spanish player help translations (es-ES) — 25 topics
derrickmehaffy Mar 10, 2026
436c124
feat: add Spanish admin help translations (es-ES), remove placeholder…
derrickmehaffy Mar 10, 2026
2e276cd
fix: strip inline markdown markers, join continuation lines, fix inva…
derrickmehaffy Mar 10, 2026
4492fba
feat: table rendering with inline rows, rich text, and help window re…
derrickmehaffy Mar 11, 2026
7847e4d
fix: remove duplicate gui.cancel key in admin lang files
derrickmehaffy Mar 11, 2026
7281969
feat: localize GUI labels for es-ES — browse stats, log time/types, s…
derrickmehaffy Mar 11, 2026
e7dc944
feat(i18n): localize admin GUI pages, entry templates, and zone flag …
derrickmehaffy Mar 11, 2026
1eb62c5
feat(i18n): localize player member and browser entry templates
derrickmehaffy Mar 11, 2026
feab965
feat(i18n): localize admin member entries and player info page
derrickmehaffy Mar 11, 2026
0d20d6b
feat(i18n): localize player invite and relation entry templates
derrickmehaffy Mar 11, 2026
2b6a713
feat(i18n): localize all hardcoded Java strings in GUI pages
derrickmehaffy Mar 11, 2026
073e8ac
feat(i18n): localize admin nav bar title and economy entry buttons
derrickmehaffy Mar 11, 2026
3efaa51
feat(i18n): localize remaining hardcoded fallbacks and format strings
derrickmehaffy Mar 11, 2026
d7078dd
fix(i18n): resolve Spanish truncation, crashes, and missing translati…
derrickmehaffy Mar 11, 2026
839de89
feat: add SimpleClaims data importer
derrickmehaffy Mar 12, 2026
9d8bab7
Merge branch 'releases/0.12.0' into feat/simpleclaims-import
derrickmehaffy Mar 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,7 @@
import com.hyperfactions.importer.ElbaphFactionsImporter;
import com.hyperfactions.importer.HyFactionsImporter;
import com.hyperfactions.importer.ImportResult;
import com.hyperfactions.importer.SimpleClaimsImporter;
import com.hyperfactions.util.CommandHelp;
import com.hyperfactions.util.HelpFormatter;
import com.hypixel.hytale.server.core.Message;
Expand All@@ -17,7 +18,7 @@
import java.util.concurrent.CompletableFuture;

/**
* Handles /f admin import commands (hyfactions, elbaphfactions).
* Handles /f admin import commands (hyfactions, elbaphfactions, simpleclaims).
*/
public class AdminImportHandler {

Expand DownExpand Up@@ -59,6 +60,7 @@ public void handleAdminImport(CommandContext ctx, String[] args) {
switch (subCmd) {
case "hyfactions" -> handleImportHyFactions(ctx, subArgs);
case "elbaphfactions" -> handleImportElbaphFactions(ctx, subArgs);
case "simpleclaims" -> handleImportSimpleClaims(ctx, subArgs);
case "help", "?" -> showImportHelp(ctx);
default -> {
ctx.sendMessage(prefix().insert(msg("Unknown import source: " + subCmd, COLOR_RED)));
Expand All@@ -73,6 +75,8 @@ private void showImportHelp(CommandContext ctx) {
commands.add(new CommandHelp(" Default path: mods/Kaws_Hyfaction", ""));
commands.add(new CommandHelp("/f admin import elbaphfactions [path] [flags]", "Import from ElbaphFactions mod"));
commands.add(new CommandHelp(" Default path: mods/ElbaphFactions", ""));
commands.add(new CommandHelp("/f admin import simpleclaims [path] [flags]", "Import from SimpleClaims mod"));
commands.add(new CommandHelp(" Default path: Server/universe/SimpleClaims", ""));
commands.add(new CommandHelp(" Flags:", ""));
commands.add(new CommandHelp(" --dry-run / -n", "Simulate without changes"));
commands.add(new CommandHelp(" --overwrite", "Replace existing factions"));
Expand DownExpand Up@@ -187,6 +191,56 @@ public void handleImportElbaphFactions(CommandContext ctx, String[] args) {
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "ElbaphFactions"));
}

/** Handles import simple claims. */
public void handleImportSimpleClaims(CommandContext ctx, String[] args) {
// Parse path (optional - default to Server/universe/SimpleClaims)
String pathStr = "Server/universe/SimpleClaims";
int flagStartIndex = 0;

if (args.length > 0 && !args[0].startsWith("-")) {
pathStr = args[0];
flagStartIndex = 1;
}

Path dataPath = Paths.get(pathStr);

boolean dryRun = false;
boolean overwrite = false;
boolean skipPower = false;

for (int i = flagStartIndex; i < args.length; i++) {
String flag = args[i].toLowerCase();
switch (flag) {
case "--dry-run", "-n" -> dryRun = true;
case "--overwrite" -> overwrite = true;
case "--no-power" -> skipPower = true;
default -> throw new IllegalStateException("Unexpected value");
}
}

ctx.sendMessage(prefix().insert(msg("Importing from SimpleClaims...", COLOR_YELLOW)));
ctx.sendMessage(msg(" Path: " + dataPath, COLOR_GRAY));
if (dryRun) {
ctx.sendMessage(msg(" (Dry run - no changes will be made)", COLOR_GRAY));
}

SimpleClaimsImporter importer = new SimpleClaimsImporter(
hyperFactions.getFactionManager(),
hyperFactions.getClaimManager(),
hyperFactions.getZoneManager(),
hyperFactions.getPowerManager(),
hyperFactions.getBackupManager()
);

importer.setDryRun(dryRun);
importer.setOverwrite(overwrite);
importer.setSkipPower(skipPower);

final boolean finalDryRun = dryRun;
CompletableFuture.supplyAsync(() -> importer.importFrom(dataPath))
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "SimpleClaims"));
}

private void reportImportResult(CommandContext ctx, ImportResult result, boolean dryRun, String sourceName) {
if (!result.hasErrors()) {
ctx.sendMessage(prefix().insert(msg(sourceName + " import " + (dryRun ? "simulation " : "") + "complete!", COLOR_GREEN)));
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
01ac52d
feat: add i18n infrastructure (Phase 0)
derrickmehaffy Mar 9, 2026
5d71da8
feat: migrate faction management and claim commands to i18n keys (Pha…
derrickmehaffy Mar 9, 2026
18398b4
feat: migrate member commands to i18n keys (Phase 1b)
derrickmehaffy Mar 9, 2026
7f47fe9
feat: migrate territory and teleport commands to i18n keys (Phase 1c)
derrickmehaffy Mar 9, 2026
ecb1e07
feat: migrate relation, social, info, and economy commands to i18n ke…
derrickmehaffy Mar 9, 2026
fb6dd72
feat: migrate UI commands and ProtectionChecker to i18n keys (Phase 1e)
derrickmehaffy Mar 9, 2026
8336c15
feat: migrate AnnouncementManager, TeleportManager, ChatManager to i1…
derrickmehaffy Mar 9, 2026
06be789
feat: add help system markdown-to-lang build pipeline (Phase 2)
derrickmehaffy Mar 9, 2026
9ea102a
chore: exclude build package from gitignore pattern
derrickmehaffy Mar 9, 2026
5ad45e0
feat: localize nav system, shared pages, and modal pages (Phase 3a)
derrickmehaffy Mar 9, 2026
6cf3396
feat: localize FactionDashboardPage and FactionMainPage (Phase 3b)
derrickmehaffy Mar 9, 2026
18ee92c
feat: localize Members, Browser, Leaderboard, and PlayerInfo pages (P…
derrickmehaffy Mar 9, 2026
55a37c2
feat: localize Relations, Settings, and Modules pages (Phase 3d)
derrickmehaffy Mar 9, 2026
b8d955c
feat: localize Treasury pages (Phase 3e)
derrickmehaffy Mar 9, 2026
96a3629
feat: localize confirmation, logs, chat, invites, and map pages (Phas…
derrickmehaffy Mar 9, 2026
b572584
feat: localize create faction and new player pages (Phase 3g)
derrickmehaffy Mar 9, 2026
7867f74
feat: localize admin GUI pages (Phase 4)
derrickmehaffy Mar 10, 2026
d3267e9
feat: add Player Settings GUI with language and notification preferen…
derrickmehaffy Mar 10, 2026
20644cc
feat: add Spanish translations, locale stubs, and translator workflow…
derrickmehaffy Mar 10, 2026
894a7b3
fix: redesign Player Settings UI and fix nav bar placement
derrickmehaffy Mar 10, 2026
e62e2d9
feat: use native locale display names and add es-ES to language selector
derrickmehaffy Mar 10, 2026
028e53e
feat: localize all GUI pages with i18n support
derrickmehaffy Mar 10, 2026
9bc2c0f
feat: localize admin zone wizard, unclaim confirm, and type modal pages
derrickmehaffy Mar 10, 2026
27346d8
fix: admin GUI crash, help i18n resolution, and dropdown display names
derrickmehaffy Mar 10, 2026
ea2da8e
fix: persist player preferences to JSON storage
derrickmehaffy Mar 10, 2026
c14c7c0
fix: disable Power Notifications toggle (not yet wired up)
derrickmehaffy Mar 10, 2026
3bcafdf
refactor: relocate help markdown to Server/Languages and remove stale…
derrickmehaffy Mar 10, 2026
f6b5bc5
feat: restructure admin test commands and extend help markdown syntax
derrickmehaffy Mar 10, 2026
b31839e
feat: add markdown rendering test page (/f admin test md)
derrickmehaffy Mar 10, 2026
e58857a
docs: add help markdown style guide and move translation guide to docs/
derrickmehaffy Mar 10, 2026
4e8f0d0
feat: add new UI Gallery elements to button test page
derrickmehaffy Mar 10, 2026
5d878ae
fix: pin markdown test page title bar to top of container
derrickmehaffy Mar 10, 2026
e3b26aa
fix: remove invalid #Title/#Content slots from Panel and SimpleContainer
derrickmehaffy Mar 10, 2026
0d8c8e7
fix: enable text wrapping and vertical centering in help templates
derrickmehaffy Mar 10, 2026
43188f5
feat: add table support to help markdown system
derrickmehaffy Mar 10, 2026
f818927
fix: improve table visual styling with GitHub-style grid borders
derrickmehaffy Mar 10, 2026
c106a59
feat: add admin help infrastructure with category filtering
derrickmehaffy Mar 10, 2026
65d5e1d
feat: rewrite player help categories 1-4 (en-US) with enhanced format…
derrickmehaffy Mar 10, 2026
82fe5f8
feat: rewrite player help categories 5-7 (en-US), add spawn protectio…
derrickmehaffy Mar 10, 2026
112120f
feat: add comprehensive admin help content (en-US) — 18 topics across…
derrickmehaffy Mar 10, 2026
a0d2000
feat: rewrite Spanish player help translations (es-ES) — 25 topics
derrickmehaffy Mar 10, 2026
436c124
feat: add Spanish admin help translations (es-ES), remove placeholder…
derrickmehaffy Mar 10, 2026
2e276cd
fix: strip inline markdown markers, join continuation lines, fix inva…
derrickmehaffy Mar 10, 2026
4492fba
feat: table rendering with inline rows, rich text, and help window re…
derrickmehaffy Mar 11, 2026
7847e4d
fix: remove duplicate gui.cancel key in admin lang files
derrickmehaffy Mar 11, 2026
7281969
feat: localize GUI labels for es-ES — browse stats, log time/types, s…
derrickmehaffy Mar 11, 2026
e7dc944
feat(i18n): localize admin GUI pages, entry templates, and zone flag …
derrickmehaffy Mar 11, 2026
1eb62c5
feat(i18n): localize player member and browser entry templates
derrickmehaffy Mar 11, 2026
feab965
feat(i18n): localize admin member entries and player info page
derrickmehaffy Mar 11, 2026
0d20d6b
feat(i18n): localize player invite and relation entry templates
derrickmehaffy Mar 11, 2026
2b6a713
feat(i18n): localize all hardcoded Java strings in GUI pages
derrickmehaffy Mar 11, 2026
073e8ac
feat(i18n): localize admin nav bar title and economy entry buttons
derrickmehaffy Mar 11, 2026
3efaa51
feat(i18n): localize remaining hardcoded fallbacks and format strings
derrickmehaffy Mar 11, 2026
d7078dd
fix(i18n): resolve Spanish truncation, crashes, and missing translati…
derrickmehaffy Mar 11, 2026
839de89
feat: add SimpleClaims data importer
derrickmehaffy Mar 12, 2026
9d8bab7
Merge branch 'releases/0.12.0' into feat/simpleclaims-import
derrickmehaffy Mar 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,7 @@
import com.hyperfactions.importer.ElbaphFactionsImporter;
import com.hyperfactions.importer.HyFactionsImporter;
import com.hyperfactions.importer.ImportResult;
import com.hyperfactions.importer.SimpleClaimsImporter;
import com.hyperfactions.util.CommandHelp;
import com.hyperfactions.util.HelpFormatter;
import com.hypixel.hytale.server.core.Message;
Expand All@@ -17,7 +18,7 @@
import java.util.concurrent.CompletableFuture;

/**
* Handles /f admin import commands (hyfactions, elbaphfactions).
* Handles /f admin import commands (hyfactions, elbaphfactions, simpleclaims).
*/
public class AdminImportHandler {

Expand DownExpand Up@@ -59,6 +60,7 @@ public void handleAdminImport(CommandContext ctx, String[] args) {
switch (subCmd) {
case "hyfactions" -> handleImportHyFactions(ctx, subArgs);
case "elbaphfactions" -> handleImportElbaphFactions(ctx, subArgs);
case "simpleclaims" -> handleImportSimpleClaims(ctx, subArgs);
case "help", "?" -> showImportHelp(ctx);
default -> {
ctx.sendMessage(prefix().insert(msg("Unknown import source: " + subCmd, COLOR_RED)));
Expand All@@ -73,6 +75,8 @@ private void showImportHelp(CommandContext ctx) {
commands.add(new CommandHelp(" Default path: mods/Kaws_Hyfaction", ""));
commands.add(new CommandHelp("/f admin import elbaphfactions [path] [flags]", "Import from ElbaphFactions mod"));
commands.add(new CommandHelp(" Default path: mods/ElbaphFactions", ""));
commands.add(new CommandHelp("/f admin import simpleclaims [path] [flags]", "Import from SimpleClaims mod"));
commands.add(new CommandHelp(" Default path: Server/universe/SimpleClaims", ""));
commands.add(new CommandHelp(" Flags:", ""));
commands.add(new CommandHelp(" --dry-run / -n", "Simulate without changes"));
commands.add(new CommandHelp(" --overwrite", "Replace existing factions"));
Expand DownExpand Up@@ -187,6 +191,56 @@ public void handleImportElbaphFactions(CommandContext ctx, String[] args) {
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "ElbaphFactions"));
}

/** Handles import simple claims. */
public void handleImportSimpleClaims(CommandContext ctx, String[] args) {
// Parse path (optional - default to Server/universe/SimpleClaims)
String pathStr = "Server/universe/SimpleClaims";
int flagStartIndex = 0;

if (args.length > 0 && !args[0].startsWith("-")) {
pathStr = args[0];
flagStartIndex = 1;
}

Path dataPath = Paths.get(pathStr);

boolean dryRun = false;
boolean overwrite = false;
boolean skipPower = false;

for (int i = flagStartIndex; i < args.length; i++) {
String flag = args[i].toLowerCase();
switch (flag) {
case "--dry-run", "-n" -> dryRun = true;
case "--overwrite" -> overwrite = true;
case "--no-power" -> skipPower = true;
default -> throw new IllegalStateException("Unexpected value");
}
}

ctx.sendMessage(prefix().insert(msg("Importing from SimpleClaims...", COLOR_YELLOW)));
ctx.sendMessage(msg(" Path: " + dataPath, COLOR_GRAY));
if (dryRun) {
ctx.sendMessage(msg(" (Dry run - no changes will be made)", COLOR_GRAY));
}

SimpleClaimsImporter importer = new SimpleClaimsImporter(
hyperFactions.getFactionManager(),
hyperFactions.getClaimManager(),
hyperFactions.getZoneManager(),
hyperFactions.getPowerManager(),
hyperFactions.getBackupManager()
);

importer.setDryRun(dryRun);
importer.setOverwrite(overwrite);
importer.setSkipPower(skipPower);

final boolean finalDryRun = dryRun;
CompletableFuture.supplyAsync(() -> importer.importFrom(dataPath))
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "SimpleClaims"));
}

private void reportImportResult(CommandContext ctx, ImportResult result, boolean dryRun, String sourceName) {
if (!result.hasErrors()) {
ctx.sendMessage(prefix().insert(msg(sourceName + " import " + (dryRun ? "simulation " : "") + "complete!", COLOR_GREEN)));
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
01ac52d
feat: add i18n infrastructure (Phase 0)
derrickmehaffy Mar 9, 2026
5d71da8
feat: migrate faction management and claim commands to i18n keys (Pha…
derrickmehaffy Mar 9, 2026
18398b4
feat: migrate member commands to i18n keys (Phase 1b)
derrickmehaffy Mar 9, 2026
7f47fe9
feat: migrate territory and teleport commands to i18n keys (Phase 1c)
derrickmehaffy Mar 9, 2026
ecb1e07
feat: migrate relation, social, info, and economy commands to i18n ke…
derrickmehaffy Mar 9, 2026
fb6dd72
feat: migrate UI commands and ProtectionChecker to i18n keys (Phase 1e)
derrickmehaffy Mar 9, 2026
8336c15
feat: migrate AnnouncementManager, TeleportManager, ChatManager to i1…
derrickmehaffy Mar 9, 2026
06be789
feat: add help system markdown-to-lang build pipeline (Phase 2)
derrickmehaffy Mar 9, 2026
9ea102a
chore: exclude build package from gitignore pattern
derrickmehaffy Mar 9, 2026
5ad45e0
feat: localize nav system, shared pages, and modal pages (Phase 3a)
derrickmehaffy Mar 9, 2026
6cf3396
feat: localize FactionDashboardPage and FactionMainPage (Phase 3b)
derrickmehaffy Mar 9, 2026
18ee92c
feat: localize Members, Browser, Leaderboard, and PlayerInfo pages (P…
derrickmehaffy Mar 9, 2026
55a37c2
feat: localize Relations, Settings, and Modules pages (Phase 3d)
derrickmehaffy Mar 9, 2026
b8d955c
feat: localize Treasury pages (Phase 3e)
derrickmehaffy Mar 9, 2026
96a3629
feat: localize confirmation, logs, chat, invites, and map pages (Phas…
derrickmehaffy Mar 9, 2026
b572584
feat: localize create faction and new player pages (Phase 3g)
derrickmehaffy Mar 9, 2026
7867f74
feat: localize admin GUI pages (Phase 4)
derrickmehaffy Mar 10, 2026
d3267e9
feat: add Player Settings GUI with language and notification preferen…
derrickmehaffy Mar 10, 2026
20644cc
feat: add Spanish translations, locale stubs, and translator workflow…
derrickmehaffy Mar 10, 2026
894a7b3
fix: redesign Player Settings UI and fix nav bar placement
derrickmehaffy Mar 10, 2026
e62e2d9
feat: use native locale display names and add es-ES to language selector
derrickmehaffy Mar 10, 2026
028e53e
feat: localize all GUI pages with i18n support
derrickmehaffy Mar 10, 2026
9bc2c0f
feat: localize admin zone wizard, unclaim confirm, and type modal pages
derrickmehaffy Mar 10, 2026
27346d8
fix: admin GUI crash, help i18n resolution, and dropdown display names
derrickmehaffy Mar 10, 2026
ea2da8e
fix: persist player preferences to JSON storage
derrickmehaffy Mar 10, 2026
c14c7c0
fix: disable Power Notifications toggle (not yet wired up)
derrickmehaffy Mar 10, 2026
3bcafdf
refactor: relocate help markdown to Server/Languages and remove stale…
derrickmehaffy Mar 10, 2026
f6b5bc5
feat: restructure admin test commands and extend help markdown syntax
derrickmehaffy Mar 10, 2026
b31839e
feat: add markdown rendering test page (/f admin test md)
derrickmehaffy Mar 10, 2026
e58857a
docs: add help markdown style guide and move translation guide to docs/
derrickmehaffy Mar 10, 2026
4e8f0d0
feat: add new UI Gallery elements to button test page
derrickmehaffy Mar 10, 2026
5d878ae
fix: pin markdown test page title bar to top of container
derrickmehaffy Mar 10, 2026
e3b26aa
fix: remove invalid #Title/#Content slots from Panel and SimpleContainer
derrickmehaffy Mar 10, 2026
0d8c8e7
fix: enable text wrapping and vertical centering in help templates
derrickmehaffy Mar 10, 2026
43188f5
feat: add table support to help markdown system
derrickmehaffy Mar 10, 2026
f818927
fix: improve table visual styling with GitHub-style grid borders
derrickmehaffy Mar 10, 2026
c106a59
feat: add admin help infrastructure with category filtering
derrickmehaffy Mar 10, 2026
65d5e1d
feat: rewrite player help categories 1-4 (en-US) with enhanced format…
derrickmehaffy Mar 10, 2026
82fe5f8
feat: rewrite player help categories 5-7 (en-US), add spawn protectio…
derrickmehaffy Mar 10, 2026
112120f
feat: add comprehensive admin help content (en-US) — 18 topics across…
derrickmehaffy Mar 10, 2026
a0d2000
feat: rewrite Spanish player help translations (es-ES) — 25 topics
derrickmehaffy Mar 10, 2026
436c124
feat: add Spanish admin help translations (es-ES), remove placeholder…
derrickmehaffy Mar 10, 2026
2e276cd
fix: strip inline markdown markers, join continuation lines, fix inva…
derrickmehaffy Mar 10, 2026
4492fba
feat: table rendering with inline rows, rich text, and help window re…
derrickmehaffy Mar 11, 2026
7847e4d
fix: remove duplicate gui.cancel key in admin lang files
derrickmehaffy Mar 11, 2026
7281969
feat: localize GUI labels for es-ES — browse stats, log time/types, s…
derrickmehaffy Mar 11, 2026
e7dc944
feat(i18n): localize admin GUI pages, entry templates, and zone flag …
derrickmehaffy Mar 11, 2026
1eb62c5
feat(i18n): localize player member and browser entry templates
derrickmehaffy Mar 11, 2026
feab965
feat(i18n): localize admin member entries and player info page
derrickmehaffy Mar 11, 2026
0d20d6b
feat(i18n): localize player invite and relation entry templates
derrickmehaffy Mar 11, 2026
2b6a713
feat(i18n): localize all hardcoded Java strings in GUI pages
derrickmehaffy Mar 11, 2026
073e8ac
feat(i18n): localize admin nav bar title and economy entry buttons
derrickmehaffy Mar 11, 2026
3efaa51
feat(i18n): localize remaining hardcoded fallbacks and format strings
derrickmehaffy Mar 11, 2026
d7078dd
fix(i18n): resolve Spanish truncation, crashes, and missing translati…
derrickmehaffy Mar 11, 2026
839de89
feat: add SimpleClaims data importer
derrickmehaffy Mar 12, 2026
9d8bab7
Merge branch 'releases/0.12.0' into feat/simpleclaims-import
derrickmehaffy Mar 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,7 @@
import com.hyperfactions.importer.ElbaphFactionsImporter;
import com.hyperfactions.importer.HyFactionsImporter;
import com.hyperfactions.importer.ImportResult;
import com.hyperfactions.importer.SimpleClaimsImporter;
import com.hyperfactions.util.CommandHelp;
import com.hyperfactions.util.HelpFormatter;
import com.hypixel.hytale.server.core.Message;
Expand All@@ -17,7 +18,7 @@
import java.util.concurrent.CompletableFuture;

/**
* Handles /f admin import commands (hyfactions, elbaphfactions).
* Handles /f admin import commands (hyfactions, elbaphfactions, simpleclaims).
*/
public class AdminImportHandler {

Expand DownExpand Up@@ -59,6 +60,7 @@ public void handleAdminImport(CommandContext ctx, String[] args) {
switch (subCmd) {
case "hyfactions" -> handleImportHyFactions(ctx, subArgs);
case "elbaphfactions" -> handleImportElbaphFactions(ctx, subArgs);
case "simpleclaims" -> handleImportSimpleClaims(ctx, subArgs);
case "help", "?" -> showImportHelp(ctx);
default -> {
ctx.sendMessage(prefix().insert(msg("Unknown import source: " + subCmd, COLOR_RED)));
Expand All@@ -73,6 +75,8 @@ private void showImportHelp(CommandContext ctx) {
commands.add(new CommandHelp(" Default path: mods/Kaws_Hyfaction", ""));
commands.add(new CommandHelp("/f admin import elbaphfactions [path] [flags]", "Import from ElbaphFactions mod"));
commands.add(new CommandHelp(" Default path: mods/ElbaphFactions", ""));
commands.add(new CommandHelp("/f admin import simpleclaims [path] [flags]", "Import from SimpleClaims mod"));
commands.add(new CommandHelp(" Default path: Server/universe/SimpleClaims", ""));
commands.add(new CommandHelp(" Flags:", ""));
commands.add(new CommandHelp(" --dry-run / -n", "Simulate without changes"));
commands.add(new CommandHelp(" --overwrite", "Replace existing factions"));
Expand DownExpand Up@@ -187,6 +191,56 @@ public void handleImportElbaphFactions(CommandContext ctx, String[] args) {
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "ElbaphFactions"));
}

/** Handles import simple claims. */
public void handleImportSimpleClaims(CommandContext ctx, String[] args) {
// Parse path (optional - default to Server/universe/SimpleClaims)
String pathStr = "Server/universe/SimpleClaims";
int flagStartIndex = 0;

if (args.length > 0 && !args[0].startsWith("-")) {
pathStr = args[0];
flagStartIndex = 1;
}

Path dataPath = Paths.get(pathStr);

boolean dryRun = false;
boolean overwrite = false;
boolean skipPower = false;

for (int i = flagStartIndex; i < args.length; i++) {
String flag = args[i].toLowerCase();
switch (flag) {
case "--dry-run", "-n" -> dryRun = true;
case "--overwrite" -> overwrite = true;
case "--no-power" -> skipPower = true;
default -> throw new IllegalStateException("Unexpected value");
}
}

ctx.sendMessage(prefix().insert(msg("Importing from SimpleClaims...", COLOR_YELLOW)));
ctx.sendMessage(msg(" Path: " + dataPath, COLOR_GRAY));
if (dryRun) {
ctx.sendMessage(msg(" (Dry run - no changes will be made)", COLOR_GRAY));
}

SimpleClaimsImporter importer = new SimpleClaimsImporter(
hyperFactions.getFactionManager(),
hyperFactions.getClaimManager(),
hyperFactions.getZoneManager(),
hyperFactions.getPowerManager(),
hyperFactions.getBackupManager()
);

importer.setDryRun(dryRun);
importer.setOverwrite(overwrite);
importer.setSkipPower(skipPower);

final boolean finalDryRun = dryRun;
CompletableFuture.supplyAsync(() -> importer.importFrom(dataPath))
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "SimpleClaims"));
}

private void reportImportResult(CommandContext ctx, ImportResult result, boolean dryRun, String sourceName) {
if (!result.hasErrors()) {
ctx.sendMessage(prefix().insert(msg(sourceName + " import " + (dryRun ? "simulation " : "") + "complete!", COLOR_GREEN)));
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
01ac52d
feat: add i18n infrastructure (Phase 0)
derrickmehaffy Mar 9, 2026
5d71da8
feat: migrate faction management and claim commands to i18n keys (Pha…
derrickmehaffy Mar 9, 2026
18398b4
feat: migrate member commands to i18n keys (Phase 1b)
derrickmehaffy Mar 9, 2026
7f47fe9
feat: migrate territory and teleport commands to i18n keys (Phase 1c)
derrickmehaffy Mar 9, 2026
ecb1e07
feat: migrate relation, social, info, and economy commands to i18n ke…
derrickmehaffy Mar 9, 2026
fb6dd72
feat: migrate UI commands and ProtectionChecker to i18n keys (Phase 1e)
derrickmehaffy Mar 9, 2026
8336c15
feat: migrate AnnouncementManager, TeleportManager, ChatManager to i1…
derrickmehaffy Mar 9, 2026
06be789
feat: add help system markdown-to-lang build pipeline (Phase 2)
derrickmehaffy Mar 9, 2026
9ea102a
chore: exclude build package from gitignore pattern
derrickmehaffy Mar 9, 2026
5ad45e0
feat: localize nav system, shared pages, and modal pages (Phase 3a)
derrickmehaffy Mar 9, 2026
6cf3396
feat: localize FactionDashboardPage and FactionMainPage (Phase 3b)
derrickmehaffy Mar 9, 2026
18ee92c
feat: localize Members, Browser, Leaderboard, and PlayerInfo pages (P…
derrickmehaffy Mar 9, 2026
55a37c2
feat: localize Relations, Settings, and Modules pages (Phase 3d)
derrickmehaffy Mar 9, 2026
b8d955c
feat: localize Treasury pages (Phase 3e)
derrickmehaffy Mar 9, 2026
96a3629
feat: localize confirmation, logs, chat, invites, and map pages (Phas…
derrickmehaffy Mar 9, 2026
b572584
feat: localize create faction and new player pages (Phase 3g)
derrickmehaffy Mar 9, 2026
7867f74
feat: localize admin GUI pages (Phase 4)
derrickmehaffy Mar 10, 2026
d3267e9
feat: add Player Settings GUI with language and notification preferen…
derrickmehaffy Mar 10, 2026
20644cc
feat: add Spanish translations, locale stubs, and translator workflow…
derrickmehaffy Mar 10, 2026
894a7b3
fix: redesign Player Settings UI and fix nav bar placement
derrickmehaffy Mar 10, 2026
e62e2d9
feat: use native locale display names and add es-ES to language selector
derrickmehaffy Mar 10, 2026
028e53e
feat: localize all GUI pages with i18n support
derrickmehaffy Mar 10, 2026
9bc2c0f
feat: localize admin zone wizard, unclaim confirm, and type modal pages
derrickmehaffy Mar 10, 2026
27346d8
fix: admin GUI crash, help i18n resolution, and dropdown display names
derrickmehaffy Mar 10, 2026
ea2da8e
fix: persist player preferences to JSON storage
derrickmehaffy Mar 10, 2026
c14c7c0
fix: disable Power Notifications toggle (not yet wired up)
derrickmehaffy Mar 10, 2026
3bcafdf
refactor: relocate help markdown to Server/Languages and remove stale…
derrickmehaffy Mar 10, 2026
f6b5bc5
feat: restructure admin test commands and extend help markdown syntax
derrickmehaffy Mar 10, 2026
b31839e
feat: add markdown rendering test page (/f admin test md)
derrickmehaffy Mar 10, 2026
e58857a
docs: add help markdown style guide and move translation guide to docs/
derrickmehaffy Mar 10, 2026
4e8f0d0
feat: add new UI Gallery elements to button test page
derrickmehaffy Mar 10, 2026
5d878ae
fix: pin markdown test page title bar to top of container
derrickmehaffy Mar 10, 2026
e3b26aa
fix: remove invalid #Title/#Content slots from Panel and SimpleContainer
derrickmehaffy Mar 10, 2026
0d8c8e7
fix: enable text wrapping and vertical centering in help templates
derrickmehaffy Mar 10, 2026
43188f5
feat: add table support to help markdown system
derrickmehaffy Mar 10, 2026
f818927
fix: improve table visual styling with GitHub-style grid borders
derrickmehaffy Mar 10, 2026
c106a59
feat: add admin help infrastructure with category filtering
derrickmehaffy Mar 10, 2026
65d5e1d
feat: rewrite player help categories 1-4 (en-US) with enhanced format…
derrickmehaffy Mar 10, 2026
82fe5f8
feat: rewrite player help categories 5-7 (en-US), add spawn protectio…
derrickmehaffy Mar 10, 2026
112120f
feat: add comprehensive admin help content (en-US) — 18 topics across…
derrickmehaffy Mar 10, 2026
a0d2000
feat: rewrite Spanish player help translations (es-ES) — 25 topics
derrickmehaffy Mar 10, 2026
436c124
feat: add Spanish admin help translations (es-ES), remove placeholder…
derrickmehaffy Mar 10, 2026
2e276cd
fix: strip inline markdown markers, join continuation lines, fix inva…
derrickmehaffy Mar 10, 2026
4492fba
feat: table rendering with inline rows, rich text, and help window re…
derrickmehaffy Mar 11, 2026
7847e4d
fix: remove duplicate gui.cancel key in admin lang files
derrickmehaffy Mar 11, 2026
7281969
feat: localize GUI labels for es-ES — browse stats, log time/types, s…
derrickmehaffy Mar 11, 2026
e7dc944
feat(i18n): localize admin GUI pages, entry templates, and zone flag …
derrickmehaffy Mar 11, 2026
1eb62c5
feat(i18n): localize player member and browser entry templates
derrickmehaffy Mar 11, 2026
feab965
feat(i18n): localize admin member entries and player info page
derrickmehaffy Mar 11, 2026
0d20d6b
feat(i18n): localize player invite and relation entry templates
derrickmehaffy Mar 11, 2026
2b6a713
feat(i18n): localize all hardcoded Java strings in GUI pages
derrickmehaffy Mar 11, 2026
073e8ac
feat(i18n): localize admin nav bar title and economy entry buttons
derrickmehaffy Mar 11, 2026
3efaa51
feat(i18n): localize remaining hardcoded fallbacks and format strings
derrickmehaffy Mar 11, 2026
d7078dd
fix(i18n): resolve Spanish truncation, crashes, and missing translati…
derrickmehaffy Mar 11, 2026
839de89
feat: add SimpleClaims data importer
derrickmehaffy Mar 12, 2026
9d8bab7
Merge branch 'releases/0.12.0' into feat/simpleclaims-import
derrickmehaffy Mar 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,7 @@
import com.hyperfactions.importer.ElbaphFactionsImporter;
import com.hyperfactions.importer.HyFactionsImporter;
import com.hyperfactions.importer.ImportResult;
import com.hyperfactions.importer.SimpleClaimsImporter;
import com.hyperfactions.util.CommandHelp;
import com.hyperfactions.util.HelpFormatter;
import com.hypixel.hytale.server.core.Message;
Expand All@@ -17,7 +18,7 @@
import java.util.concurrent.CompletableFuture;

/**
* Handles /f admin import commands (hyfactions, elbaphfactions).
* Handles /f admin import commands (hyfactions, elbaphfactions, simpleclaims).
*/
public class AdminImportHandler {

Expand DownExpand Up@@ -59,6 +60,7 @@ public void handleAdminImport(CommandContext ctx, String[] args) {
switch (subCmd) {
case "hyfactions" -> handleImportHyFactions(ctx, subArgs);
case "elbaphfactions" -> handleImportElbaphFactions(ctx, subArgs);
case "simpleclaims" -> handleImportSimpleClaims(ctx, subArgs);
case "help", "?" -> showImportHelp(ctx);
default -> {
ctx.sendMessage(prefix().insert(msg("Unknown import source: " + subCmd, COLOR_RED)));
Expand All@@ -73,6 +75,8 @@ private void showImportHelp(CommandContext ctx) {
commands.add(new CommandHelp(" Default path: mods/Kaws_Hyfaction", ""));
commands.add(new CommandHelp("/f admin import elbaphfactions [path] [flags]", "Import from ElbaphFactions mod"));
commands.add(new CommandHelp(" Default path: mods/ElbaphFactions", ""));
commands.add(new CommandHelp("/f admin import simpleclaims [path] [flags]", "Import from SimpleClaims mod"));
commands.add(new CommandHelp(" Default path: Server/universe/SimpleClaims", ""));
commands.add(new CommandHelp(" Flags:", ""));
commands.add(new CommandHelp(" --dry-run / -n", "Simulate without changes"));
commands.add(new CommandHelp(" --overwrite", "Replace existing factions"));
Expand DownExpand Up@@ -187,6 +191,56 @@ public void handleImportElbaphFactions(CommandContext ctx, String[] args) {
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "ElbaphFactions"));
}

/** Handles import simple claims. */
public void handleImportSimpleClaims(CommandContext ctx, String[] args) {
// Parse path (optional - default to Server/universe/SimpleClaims)
String pathStr = "Server/universe/SimpleClaims";
int flagStartIndex = 0;

if (args.length > 0 && !args[0].startsWith("-")) {
pathStr = args[0];
flagStartIndex = 1;
}

Path dataPath = Paths.get(pathStr);

boolean dryRun = false;
boolean overwrite = false;
boolean skipPower = false;

for (int i = flagStartIndex; i < args.length; i++) {
String flag = args[i].toLowerCase();
switch (flag) {
case "--dry-run", "-n" -> dryRun = true;
case "--overwrite" -> overwrite = true;
case "--no-power" -> skipPower = true;
default -> throw new IllegalStateException("Unexpected value");
}
}

ctx.sendMessage(prefix().insert(msg("Importing from SimpleClaims...", COLOR_YELLOW)));
ctx.sendMessage(msg(" Path: " + dataPath, COLOR_GRAY));
if (dryRun) {
ctx.sendMessage(msg(" (Dry run - no changes will be made)", COLOR_GRAY));
}

SimpleClaimsImporter importer = new SimpleClaimsImporter(
hyperFactions.getFactionManager(),
hyperFactions.getClaimManager(),
hyperFactions.getZoneManager(),
hyperFactions.getPowerManager(),
hyperFactions.getBackupManager()
);

importer.setDryRun(dryRun);
importer.setOverwrite(overwrite);
importer.setSkipPower(skipPower);

final boolean finalDryRun = dryRun;
CompletableFuture.supplyAsync(() -> importer.importFrom(dataPath))
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "SimpleClaims"));
}

private void reportImportResult(CommandContext ctx, ImportResult result, boolean dryRun, String sourceName) {
if (!result.hasErrors()) {
ctx.sendMessage(prefix().insert(msg(sourceName + " import " + (dryRun ? "simulation " : "") + "complete!", COLOR_GREEN)));
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
01ac52d
feat: add i18n infrastructure (Phase 0)
derrickmehaffy Mar 9, 2026
5d71da8
feat: migrate faction management and claim commands to i18n keys (Pha…
derrickmehaffy Mar 9, 2026
18398b4
feat: migrate member commands to i18n keys (Phase 1b)
derrickmehaffy Mar 9, 2026
7f47fe9
feat: migrate territory and teleport commands to i18n keys (Phase 1c)
derrickmehaffy Mar 9, 2026
ecb1e07
feat: migrate relation, social, info, and economy commands to i18n ke…
derrickmehaffy Mar 9, 2026
fb6dd72
feat: migrate UI commands and ProtectionChecker to i18n keys (Phase 1e)
derrickmehaffy Mar 9, 2026
8336c15
feat: migrate AnnouncementManager, TeleportManager, ChatManager to i1…
derrickmehaffy Mar 9, 2026
06be789
feat: add help system markdown-to-lang build pipeline (Phase 2)
derrickmehaffy Mar 9, 2026
9ea102a
chore: exclude build package from gitignore pattern
derrickmehaffy Mar 9, 2026
5ad45e0
feat: localize nav system, shared pages, and modal pages (Phase 3a)
derrickmehaffy Mar 9, 2026
6cf3396
feat: localize FactionDashboardPage and FactionMainPage (Phase 3b)
derrickmehaffy Mar 9, 2026
18ee92c
feat: localize Members, Browser, Leaderboard, and PlayerInfo pages (P…
derrickmehaffy Mar 9, 2026
55a37c2
feat: localize Relations, Settings, and Modules pages (Phase 3d)
derrickmehaffy Mar 9, 2026
b8d955c
feat: localize Treasury pages (Phase 3e)
derrickmehaffy Mar 9, 2026
96a3629
feat: localize confirmation, logs, chat, invites, and map pages (Phas…
derrickmehaffy Mar 9, 2026
b572584
feat: localize create faction and new player pages (Phase 3g)
derrickmehaffy Mar 9, 2026
7867f74
feat: localize admin GUI pages (Phase 4)
derrickmehaffy Mar 10, 2026
d3267e9
feat: add Player Settings GUI with language and notification preferen…
derrickmehaffy Mar 10, 2026
20644cc
feat: add Spanish translations, locale stubs, and translator workflow…
derrickmehaffy Mar 10, 2026
894a7b3
fix: redesign Player Settings UI and fix nav bar placement
derrickmehaffy Mar 10, 2026
e62e2d9
feat: use native locale display names and add es-ES to language selector
derrickmehaffy Mar 10, 2026
028e53e
feat: localize all GUI pages with i18n support
derrickmehaffy Mar 10, 2026
9bc2c0f
feat: localize admin zone wizard, unclaim confirm, and type modal pages
derrickmehaffy Mar 10, 2026
27346d8
fix: admin GUI crash, help i18n resolution, and dropdown display names
derrickmehaffy Mar 10, 2026
ea2da8e
fix: persist player preferences to JSON storage
derrickmehaffy Mar 10, 2026
c14c7c0
fix: disable Power Notifications toggle (not yet wired up)
derrickmehaffy Mar 10, 2026
3bcafdf
refactor: relocate help markdown to Server/Languages and remove stale…
derrickmehaffy Mar 10, 2026
f6b5bc5
feat: restructure admin test commands and extend help markdown syntax
derrickmehaffy Mar 10, 2026
b31839e
feat: add markdown rendering test page (/f admin test md)
derrickmehaffy Mar 10, 2026
e58857a
docs: add help markdown style guide and move translation guide to docs/
derrickmehaffy Mar 10, 2026
4e8f0d0
feat: add new UI Gallery elements to button test page
derrickmehaffy Mar 10, 2026
5d878ae
fix: pin markdown test page title bar to top of container
derrickmehaffy Mar 10, 2026
e3b26aa
fix: remove invalid #Title/#Content slots from Panel and SimpleContainer
derrickmehaffy Mar 10, 2026
0d8c8e7
fix: enable text wrapping and vertical centering in help templates
derrickmehaffy Mar 10, 2026
43188f5
feat: add table support to help markdown system
derrickmehaffy Mar 10, 2026
f818927
fix: improve table visual styling with GitHub-style grid borders
derrickmehaffy Mar 10, 2026
c106a59
feat: add admin help infrastructure with category filtering
derrickmehaffy Mar 10, 2026
65d5e1d
feat: rewrite player help categories 1-4 (en-US) with enhanced format…
derrickmehaffy Mar 10, 2026
82fe5f8
feat: rewrite player help categories 5-7 (en-US), add spawn protectio…
derrickmehaffy Mar 10, 2026
112120f
feat: add comprehensive admin help content (en-US) — 18 topics across…
derrickmehaffy Mar 10, 2026
a0d2000
feat: rewrite Spanish player help translations (es-ES) — 25 topics
derrickmehaffy Mar 10, 2026
436c124
feat: add Spanish admin help translations (es-ES), remove placeholder…
derrickmehaffy Mar 10, 2026
2e276cd
fix: strip inline markdown markers, join continuation lines, fix inva…
derrickmehaffy Mar 10, 2026
4492fba
feat: table rendering with inline rows, rich text, and help window re…
derrickmehaffy Mar 11, 2026
7847e4d
fix: remove duplicate gui.cancel key in admin lang files
derrickmehaffy Mar 11, 2026
7281969
feat: localize GUI labels for es-ES — browse stats, log time/types, s…
derrickmehaffy Mar 11, 2026
e7dc944
feat(i18n): localize admin GUI pages, entry templates, and zone flag …
derrickmehaffy Mar 11, 2026
1eb62c5
feat(i18n): localize player member and browser entry templates
derrickmehaffy Mar 11, 2026
feab965
feat(i18n): localize admin member entries and player info page
derrickmehaffy Mar 11, 2026
0d20d6b
feat(i18n): localize player invite and relation entry templates
derrickmehaffy Mar 11, 2026
2b6a713
feat(i18n): localize all hardcoded Java strings in GUI pages
derrickmehaffy Mar 11, 2026
073e8ac
feat(i18n): localize admin nav bar title and economy entry buttons
derrickmehaffy Mar 11, 2026
3efaa51
feat(i18n): localize remaining hardcoded fallbacks and format strings
derrickmehaffy Mar 11, 2026
d7078dd
fix(i18n): resolve Spanish truncation, crashes, and missing translati…
derrickmehaffy Mar 11, 2026
839de89
feat: add SimpleClaims data importer
derrickmehaffy Mar 12, 2026
9d8bab7
Merge branch 'releases/0.12.0' into feat/simpleclaims-import
derrickmehaffy Mar 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,7 @@
import com.hyperfactions.importer.ElbaphFactionsImporter;
import com.hyperfactions.importer.HyFactionsImporter;
import com.hyperfactions.importer.ImportResult;
import com.hyperfactions.importer.SimpleClaimsImporter;
import com.hyperfactions.util.CommandHelp;
import com.hyperfactions.util.HelpFormatter;
import com.hypixel.hytale.server.core.Message;
Expand All@@ -17,7 +18,7 @@
import java.util.concurrent.CompletableFuture;

/**
* Handles /f admin import commands (hyfactions, elbaphfactions).
* Handles /f admin import commands (hyfactions, elbaphfactions, simpleclaims).
*/
public class AdminImportHandler {

Expand DownExpand Up@@ -59,6 +60,7 @@ public void handleAdminImport(CommandContext ctx, String[] args) {
switch (subCmd) {
case "hyfactions" -> handleImportHyFactions(ctx, subArgs);
case "elbaphfactions" -> handleImportElbaphFactions(ctx, subArgs);
case "simpleclaims" -> handleImportSimpleClaims(ctx, subArgs);
case "help", "?" -> showImportHelp(ctx);
default -> {
ctx.sendMessage(prefix().insert(msg("Unknown import source: " + subCmd, COLOR_RED)));
Expand All@@ -73,6 +75,8 @@ private void showImportHelp(CommandContext ctx) {
commands.add(new CommandHelp(" Default path: mods/Kaws_Hyfaction", ""));
commands.add(new CommandHelp("/f admin import elbaphfactions [path] [flags]", "Import from ElbaphFactions mod"));
commands.add(new CommandHelp(" Default path: mods/ElbaphFactions", ""));
commands.add(new CommandHelp("/f admin import simpleclaims [path] [flags]", "Import from SimpleClaims mod"));
commands.add(new CommandHelp(" Default path: Server/universe/SimpleClaims", ""));
commands.add(new CommandHelp(" Flags:", ""));
commands.add(new CommandHelp(" --dry-run / -n", "Simulate without changes"));
commands.add(new CommandHelp(" --overwrite", "Replace existing factions"));
Expand DownExpand Up@@ -187,6 +191,56 @@ public void handleImportElbaphFactions(CommandContext ctx, String[] args) {
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "ElbaphFactions"));
}

/** Handles import simple claims. */
public void handleImportSimpleClaims(CommandContext ctx, String[] args) {
// Parse path (optional - default to Server/universe/SimpleClaims)
String pathStr = "Server/universe/SimpleClaims";
int flagStartIndex = 0;

if (args.length > 0 && !args[0].startsWith("-")) {
pathStr = args[0];
flagStartIndex = 1;
}

Path dataPath = Paths.get(pathStr);

boolean dryRun = false;
boolean overwrite = false;
boolean skipPower = false;

for (int i = flagStartIndex; i < args.length; i++) {
String flag = args[i].toLowerCase();
switch (flag) {
case "--dry-run", "-n" -> dryRun = true;
case "--overwrite" -> overwrite = true;
case "--no-power" -> skipPower = true;
default -> throw new IllegalStateException("Unexpected value");
}
}

ctx.sendMessage(prefix().insert(msg("Importing from SimpleClaims...", COLOR_YELLOW)));
ctx.sendMessage(msg(" Path: " + dataPath, COLOR_GRAY));
if (dryRun) {
ctx.sendMessage(msg(" (Dry run - no changes will be made)", COLOR_GRAY));
}

SimpleClaimsImporter importer = new SimpleClaimsImporter(
hyperFactions.getFactionManager(),
hyperFactions.getClaimManager(),
hyperFactions.getZoneManager(),
hyperFactions.getPowerManager(),
hyperFactions.getBackupManager()
);

importer.setDryRun(dryRun);
importer.setOverwrite(overwrite);
importer.setSkipPower(skipPower);

final boolean finalDryRun = dryRun;
CompletableFuture.supplyAsync(() -> importer.importFrom(dataPath))
.thenAccept(result -> reportImportResult(ctx, result, finalDryRun, "SimpleClaims"));
}

private void reportImportResult(CommandContext ctx, ImportResult result, boolean dryRun, String sourceName) {
if (!result.hasErrors()) {
ctx.sendMessage(prefix().insert(msg(sourceName + " import " + (dryRun ? "simulation " : "") + "complete!", COLOR_GREEN)));
Expand Down
Loading