ref:4c27881abcad1b44c2faf47ee589e6ea9e0f1232

fix: terminal not starting — onPlayerInteract never called client-side

TerminalBlock.use() was returning SUCCESS on client side without calling onPlayerInteract(). The method was only called server-side where it's gated by if(!isClientSide()) return. Terminal never started. Root cause: Phase 4 moved permission checks to server-side but accidentally moved the entire interaction to server-side. Terminal start MUST happen client-side (PTY, rendering need client context). Fix: server side checks permissions and returns CONSUME/FAIL. Client side calls onPlayerInteract() to start the terminal. This bug was NOT caught by GameTests because they run server-side and can't test client-side interaction flow. The existing rightClickNoCrash test only verified "no crash" not "terminal started." Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SHA: 4c27881abcad1b44c2faf47ee589e6ea9e0f1232
Author: Cole Christensen <cole.christensen@macmillan.com>
Date: 2026-03-22 05:07
Parents: b08bda0
1 files changed +15 -18
Type
common/src/main/java/io/fangorn/huorn/block/TerminalBlock.java +15 −18
@@ -78,31 +78,28 @@
return InteractionResult.PASS; // Let Minecraft handle block placement on other faces
}
if (level.isClientSide()) {
return InteractionResult.SUCCESS;
}
// Server-side: block on dedicated servers if not enabled
// Server-side: permission and config checks
if (!level.isClientSide()) {
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;
}
if (!HuornPermissions.hasPermission(serverPlayer, HuornPermissions.USE)) {
serverPlayer.sendSystemMessage(Component.literal("You don't have permission to use terminals."));
return InteractionResult.FAIL;
}
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;
}
return InteractionResult.CONSUME;
}
// Server-side: start terminal, notify client
// Client-side: start terminal and open screen
TerminalBlockEntity entity = (TerminalBlockEntity) level.getBlockEntity(pos);
if (entity != null) {
entity.onPlayerInteract(player);
}
return InteractionResult.CONSUME;
return InteractionResult.SUCCESS;
}
@Override