@@ -210,7 +210,25 @@
Change `mod_id=alacrittymc` to `mod_id=huorn`.
Change `mod_name=Alacritty Minecraft` to `mod_name=Huorn`.
Change `maven_group=io.fangorn.alacrittymc` to `maven_group=io.fangorn.huorn`.
Change `archives_base_name=alacritty-minecraft` to `archives_base_name=huorn-minecraft`.
- [ ] **Step 4a: Rename log message prefixes**
Replace `[AlacrittyMC]` with `[Huorn]` in all Java and Rust files:
```bash
find . -name "*.java" -exec sed -i '' 's/\[AlacrittyMC\]/[Huorn]/g' {} +
find . -name "*.rs" -exec sed -i '' 's/\[AlacrittyMC\]/[Huorn]/g' {} +
```
- [ ] **Step 4b: Rename NativeLoader temp directory**
In `NativeLoader.java`, change `"alacrittymc-natives"` to `"huorn-natives"`.
- [ ] **Step 4c: Rename JNI test files in rust/tests/java/**
Rename `rust/tests/java/io/fangorn/alacrittymc/` to `rust/tests/java/io/fangorn/huorn/` and update package declarations and `System.loadLibrary` calls within.
- [ ] **Step 5: Commit**
```bash
@@ -261,6 +279,6 @@
- [ ] **Step 4: Update mods.toml**
Change: `modId="alacrittymc"` -> `modId="huorn"`, `displayName="Alacritty Minecraft"` -> `displayName="Huorn"`.
Change: `modId="alacrittymc"` -> `modId="huorn"`, `displayName="Alacritty Minecraft"` -> `displayName="Huorn"`. Also rename all `[[dependencies.alacrittymc]]` table headers to `[[dependencies.huorn]]`.
- [ ] **Step 5: Update common/build.gradle access widener reference**
@@ -718,8 +736,15 @@
return InteractionResult.SUCCESS; // Client: optimistic, let server decide
}
// Server-side permission check
// Server-side: block on dedicated servers if not enabled
if (player instanceof ServerPlayer serverPlayer) {
if (serverPlayer.getServer().isDedicatedServer()
&& !HuornConfig.getInstance().server.enableOnServers) {
serverPlayer.sendSystemMessage(Component.literal("Terminals are disabled on this server."));
return InteractionResult.FAIL;
}
// Permission check
if (!HuornPermissions.hasPermission(serverPlayer, HuornPermissions.USE)) {
serverPlayer.sendSystemMessage(Component.literal("You don't have permission to use terminals."));
return InteractionResult.FAIL;
@@ -876,12 +901,10 @@
public class HuornCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher) {
// Start with just ReloadCommand. ListCommand, KillCommand, StatusCommand
// added in Task 14. AuditCommand added in Task 15.
dispatcher.register(Commands.literal("huorn")
.then(ReloadCommand.register())
.then(ListCommand.register())
.then(KillCommand.register())
.then(StatusCommand.register())
.then(AuditCommand.register())
);
}
}
@@ -1692,16 +1715,23 @@
```java
private String resolveBackend(ServerPlayer player) {
HuornConfig config = HuornConfig.getInstance();
String preferred = config.server.defaultBackend; // "plain" or "docker"
// If player has docker permission and docker is enabled, use docker
if (config.backends.docker.enabled
// If default is docker: use it only if enabled AND player has permission
if ("docker".equals(preferred) && config.backends.docker.enabled
&& HuornPermissions.hasPermission(player, HuornPermissions.USE_DOCKER)) {
return "docker";
}
// If default is plain (or docker wasn't available): use plain if enabled
// Fall back to plain if enabled
if (config.backends.plain.enabled) {
return "plain";
}
// Last resort: try docker if enabled and player has permission
if (config.backends.docker.enabled
&& HuornPermissions.hasPermission(player, HuornPermissions.USE_DOCKER)) {
return "docker";
}
// No backend available