Skip to content

Commit a958609

Browse files
cryptobenchclaude
andcommitted
Use HytaleLogger instead of System.out.println for proper logging
- Pass HytaleLogger from plugin to all protection systems - Use flogger API (atInfo().log(), atWarning().log(), etc.) - Logs now appear in server console and log files properly Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 62bae84 commit a958609

6 files changed

Lines changed: 53 additions & 39 deletions

File tree

src/main/java/com/landclaims/LandClaims.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -73,28 +73,27 @@ public void setup() {
7373
protectionListener.register(getEventRegistry());
7474

7575
// Register ECS block protection systems
76-
System.out.println("[LandClaims] Registering ECS block protection systems...");
76+
getLogger().atInfo().log("Registering ECS block protection systems...");
7777
try {
7878
// Register entity event types first - required before systems can receive these events
7979
getEntityStoreRegistry().registerEntityEventType(DamageBlockEvent.class);
8080
getEntityStoreRegistry().registerEntityEventType(BreakBlockEvent.class);
8181
getEntityStoreRegistry().registerEntityEventType(PlaceBlockEvent.class);
8282
getEntityStoreRegistry().registerEntityEventType(UseBlockEvent.Pre.class);
83-
System.out.println("[LandClaims] Registered entity event types");
83+
getLogger().atInfo().log("Registered entity event types");
8484

8585
// Now register the systems that handle these events
86-
getEntityStoreRegistry().registerSystem(new BlockDamageProtectionSystem(claimManager));
87-
System.out.println("[LandClaims] Registered BlockDamageProtectionSystem");
88-
getEntityStoreRegistry().registerSystem(new BlockBreakProtectionSystem(claimManager));
89-
System.out.println("[LandClaims] Registered BlockBreakProtectionSystem");
90-
getEntityStoreRegistry().registerSystem(new BlockPlaceProtectionSystem(claimManager));
91-
System.out.println("[LandClaims] Registered BlockPlaceProtectionSystem");
92-
getEntityStoreRegistry().registerSystem(new BlockUseProtectionSystem(claimManager));
93-
System.out.println("[LandClaims] Registered BlockUseProtectionSystem");
94-
System.out.println("[LandClaims] All ECS systems registered successfully!");
86+
getEntityStoreRegistry().registerSystem(new BlockDamageProtectionSystem(claimManager, getLogger()));
87+
getLogger().atInfo().log("Registered BlockDamageProtectionSystem");
88+
getEntityStoreRegistry().registerSystem(new BlockBreakProtectionSystem(claimManager, getLogger()));
89+
getLogger().atInfo().log("Registered BlockBreakProtectionSystem");
90+
getEntityStoreRegistry().registerSystem(new BlockPlaceProtectionSystem(claimManager, getLogger()));
91+
getLogger().atInfo().log("Registered BlockPlaceProtectionSystem");
92+
getEntityStoreRegistry().registerSystem(new BlockUseProtectionSystem(claimManager, getLogger()));
93+
getLogger().atInfo().log("Registered BlockUseProtectionSystem");
94+
getLogger().atInfo().log("All ECS systems registered successfully!");
9595
} catch (Exception e) {
96-
System.out.println("[LandClaims] ERROR registering ECS systems: " + e.getMessage());
97-
e.printStackTrace();
96+
getLogger().atSevere().withCause(e).log("ERROR registering ECS systems");
9897
}
9998
}
10099

src/main/java/com/landclaims/listeners/ClaimProtectionListener.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.landclaims.listeners;
22

33
import com.hypixel.hytale.event.EventRegistry;
4+
import com.hypixel.hytale.logger.HytaleLogger;
45
import com.hypixel.hytale.math.vector.Vector3i;
56
import com.hypixel.hytale.server.core.entity.entities.Player;
67
import com.hypixel.hytale.server.core.event.events.player.PlayerConnectEvent;
@@ -22,6 +23,7 @@
2223
public class ClaimProtectionListener {
2324
private final LandClaims plugin;
2425
private final ClaimManager claimManager;
26+
private final HytaleLogger logger;
2527

2628
// Track player interactions - shared with BlockProtectionSystems
2729
// Key: "x,y,z" block position, Value: PlayerInteraction data
@@ -33,6 +35,7 @@ public class ClaimProtectionListener {
3335
public ClaimProtectionListener(LandClaims plugin) {
3436
this.plugin = plugin;
3537
this.claimManager = plugin.getClaimManager();
38+
this.logger = plugin.getLogger();
3639
}
3740

3841
/**
@@ -62,8 +65,7 @@ private void onPlayerInteract(PlayerInteractEvent event) {
6265
InteractionType actionType = event.getActionType();
6366

6467
// DEBUG: Log all interactions
65-
System.out.println("[LandClaims] PlayerInteractEvent: player=" + playerId +
66-
" block=" + targetBlock + " action=" + actionType);
68+
logger.atInfo().log("PlayerInteractEvent: player=%s block=%s action=%s", playerId, targetBlock, actionType);
6769

6870
// Track this interaction for ECS event correlation
6971
String blockKey = getBlockKey(targetBlock);
@@ -76,11 +78,12 @@ private void onPlayerInteract(PlayerInteractEvent event) {
7678

7779
// Check if this location is protected - cancel ALL interactions in protected areas
7880
boolean canInteract = claimManager.canInteract(playerId, worldName, targetBlock.getX(), targetBlock.getZ());
79-
System.out.println("[LandClaims] canInteract=" + canInteract + " for chunk " +
80-
(int)Math.floor(targetBlock.getX()/16.0) + "," + (int)Math.floor(targetBlock.getZ()/16.0));
81+
int chunkX = (int)Math.floor(targetBlock.getX()/16.0);
82+
int chunkZ = (int)Math.floor(targetBlock.getZ()/16.0);
83+
logger.atInfo().log("canInteract=%s for chunk %d,%d", canInteract, chunkX, chunkZ);
8184

8285
if (!canInteract) {
83-
System.out.println("[LandClaims] CANCELLING PlayerInteractEvent");
86+
logger.atInfo().log("CANCELLING PlayerInteractEvent");
8487
event.setCancelled(true);
8588
}
8689
}

src/main/java/com/landclaims/systems/BlockBreakProtectionSystem.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.hypixel.hytale.component.Store;
77
import com.hypixel.hytale.component.query.Query;
88
import com.hypixel.hytale.component.system.EntityEventSystem;
9+
import com.hypixel.hytale.logger.HytaleLogger;
910
import com.hypixel.hytale.math.vector.Vector3i;
1011
import com.hypixel.hytale.server.core.entity.entities.Player;
1112
import com.hypixel.hytale.server.core.event.events.ecs.BreakBlockEvent;
@@ -20,10 +21,12 @@
2021
public class BlockBreakProtectionSystem extends EntityEventSystem<EntityStore, BreakBlockEvent> {
2122

2223
private final ClaimManager claimManager;
24+
private final HytaleLogger logger;
2325

24-
public BlockBreakProtectionSystem(ClaimManager claimManager) {
26+
public BlockBreakProtectionSystem(ClaimManager claimManager, HytaleLogger logger) {
2527
super(BreakBlockEvent.class);
2628
this.claimManager = claimManager;
29+
this.logger = logger;
2730
}
2831

2932
@Override
@@ -37,29 +40,29 @@ public void handle(int entityIndex, ArchetypeChunk<EntityStore> chunk, Store<Ent
3740
Vector3i targetBlock = event.getTargetBlock();
3841
if (targetBlock == null) return;
3942

40-
System.out.println("[LandClaims] BreakBlockEvent fired at " + targetBlock);
43+
logger.atInfo().log("BreakBlockEvent fired at %s", targetBlock);
4144

4245
// Get the entity that triggered this event
4346
Ref<EntityStore> entityRef = chunk.getReferenceTo(entityIndex);
4447
if (entityRef == null) {
45-
System.out.println("[LandClaims] BreakBlock: No entity ref");
48+
logger.atWarning().log("BreakBlock: No entity ref");
4649
return;
4750
}
4851

4952
// Get the Player component from the entity
5053
Player player = store.getComponent(entityRef, Player.getComponentType());
5154
if (player == null) {
52-
System.out.println("[LandClaims] BreakBlock: Entity is not a player");
55+
logger.atFine().log("BreakBlock: Entity is not a player");
5356
return;
5457
}
5558

5659
UUID playerId = player.getUuid();
5760
String worldName = "default"; // TODO: Get actual world name
5861

59-
System.out.println("[LandClaims] BreakBlock: Player " + playerId + " at " + targetBlock);
62+
logger.atInfo().log("BreakBlock: Player %s at %s", playerId, targetBlock);
6063

6164
if (!claimManager.canInteract(playerId, worldName, targetBlock.getX(), targetBlock.getZ())) {
62-
System.out.println("[LandClaims] CANCELLING BreakBlockEvent for player " + playerId);
65+
logger.atInfo().log("CANCELLING BreakBlockEvent for player %s", playerId);
6366
event.setCancelled(true);
6467
}
6568
}

src/main/java/com/landclaims/systems/BlockDamageProtectionSystem.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.hypixel.hytale.component.Store;
77
import com.hypixel.hytale.component.query.Query;
88
import com.hypixel.hytale.component.system.EntityEventSystem;
9+
import com.hypixel.hytale.logger.HytaleLogger;
910
import com.hypixel.hytale.math.vector.Vector3i;
1011
import com.hypixel.hytale.server.core.entity.entities.Player;
1112
import com.hypixel.hytale.server.core.event.events.ecs.DamageBlockEvent;
@@ -21,10 +22,12 @@
2122
public class BlockDamageProtectionSystem extends EntityEventSystem<EntityStore, DamageBlockEvent> {
2223

2324
private final ClaimManager claimManager;
25+
private final HytaleLogger logger;
2426

25-
public BlockDamageProtectionSystem(ClaimManager claimManager) {
27+
public BlockDamageProtectionSystem(ClaimManager claimManager, HytaleLogger logger) {
2628
super(DamageBlockEvent.class);
2729
this.claimManager = claimManager;
30+
this.logger = logger;
2831
}
2932

3033
@Override
@@ -56,7 +59,7 @@ public void handle(int entityIndex, ArchetypeChunk<EntityStore> chunk, Store<Ent
5659
if (!claimManager.canInteract(playerId, worldName, targetBlock.getX(), targetBlock.getZ())) {
5760
// Only log on first damage attempt to reduce spam
5861
if (event.getCurrentDamage() < 0.1f) {
59-
System.out.println("[LandClaims] CANCELLING DamageBlockEvent for player " + playerId + " at " + targetBlock);
62+
logger.atInfo().log("CANCELLING DamageBlockEvent for player %s at %s", playerId, targetBlock);
6063
}
6164
event.setCancelled(true);
6265
}

src/main/java/com/landclaims/systems/BlockPlaceProtectionSystem.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.hypixel.hytale.component.Store;
77
import com.hypixel.hytale.component.query.Query;
88
import com.hypixel.hytale.component.system.EntityEventSystem;
9+
import com.hypixel.hytale.logger.HytaleLogger;
910
import com.hypixel.hytale.math.vector.Vector3i;
1011
import com.hypixel.hytale.server.core.entity.entities.Player;
1112
import com.hypixel.hytale.server.core.event.events.ecs.PlaceBlockEvent;
@@ -20,10 +21,12 @@
2021
public class BlockPlaceProtectionSystem extends EntityEventSystem<EntityStore, PlaceBlockEvent> {
2122

2223
private final ClaimManager claimManager;
24+
private final HytaleLogger logger;
2325

24-
public BlockPlaceProtectionSystem(ClaimManager claimManager) {
26+
public BlockPlaceProtectionSystem(ClaimManager claimManager, HytaleLogger logger) {
2527
super(PlaceBlockEvent.class);
2628
this.claimManager = claimManager;
29+
this.logger = logger;
2730
}
2831

2932
@Override
@@ -37,29 +40,29 @@ public void handle(int entityIndex, ArchetypeChunk<EntityStore> chunk, Store<Ent
3740
Vector3i targetBlock = event.getTargetBlock();
3841
if (targetBlock == null) return;
3942

40-
System.out.println("[LandClaims] PlaceBlockEvent fired at " + targetBlock);
43+
logger.atInfo().log("PlaceBlockEvent fired at %s", targetBlock);
4144

4245
// Get the entity that triggered this event
4346
Ref<EntityStore> entityRef = chunk.getReferenceTo(entityIndex);
4447
if (entityRef == null) {
45-
System.out.println("[LandClaims] PlaceBlock: No entity ref");
48+
logger.atWarning().log("PlaceBlock: No entity ref");
4649
return;
4750
}
4851

4952
// Get the Player component from the entity
5053
Player player = store.getComponent(entityRef, Player.getComponentType());
5154
if (player == null) {
52-
System.out.println("[LandClaims] PlaceBlock: Entity is not a player");
55+
logger.atFine().log("PlaceBlock: Entity is not a player");
5356
return;
5457
}
5558

5659
UUID playerId = player.getUuid();
5760
String worldName = "default"; // TODO: Get actual world name
5861

59-
System.out.println("[LandClaims] PlaceBlock: Player " + playerId + " at " + targetBlock);
62+
logger.atInfo().log("PlaceBlock: Player %s at %s", playerId, targetBlock);
6063

6164
if (!claimManager.canInteract(playerId, worldName, targetBlock.getX(), targetBlock.getZ())) {
62-
System.out.println("[LandClaims] CANCELLING PlaceBlockEvent for player " + playerId);
65+
logger.atInfo().log("CANCELLING PlaceBlockEvent for player %s", playerId);
6366
event.setCancelled(true);
6467
}
6568
}

src/main/java/com/landclaims/systems/BlockUseProtectionSystem.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.hypixel.hytale.component.Store;
77
import com.hypixel.hytale.component.query.Query;
88
import com.hypixel.hytale.component.system.EntityEventSystem;
9+
import com.hypixel.hytale.logger.HytaleLogger;
910
import com.hypixel.hytale.math.vector.Vector3i;
1011
import com.hypixel.hytale.server.core.entity.InteractionContext;
1112
import com.hypixel.hytale.server.core.entity.entities.Player;
@@ -21,10 +22,12 @@
2122
public class BlockUseProtectionSystem extends EntityEventSystem<EntityStore, UseBlockEvent.Pre> {
2223

2324
private final ClaimManager claimManager;
25+
private final HytaleLogger logger;
2426

25-
public BlockUseProtectionSystem(ClaimManager claimManager) {
27+
public BlockUseProtectionSystem(ClaimManager claimManager, HytaleLogger logger) {
2628
super(UseBlockEvent.Pre.class);
2729
this.claimManager = claimManager;
30+
this.logger = logger;
2831
}
2932

3033
@Override
@@ -38,35 +41,35 @@ public void handle(int entityIndex, ArchetypeChunk<EntityStore> chunk, Store<Ent
3841
Vector3i targetBlock = event.getTargetBlock();
3942
if (targetBlock == null) return;
4043

41-
System.out.println("[LandClaims] UseBlockEvent.Pre fired at " + targetBlock);
44+
logger.atInfo().log("UseBlockEvent.Pre fired at %s", targetBlock);
4245

4346
// Get player directly from the InteractionContext
4447
InteractionContext context = event.getContext();
4548
if (context == null) {
46-
System.out.println("[LandClaims] UseBlock: No context available");
49+
logger.atWarning().log("UseBlock: No context available");
4750
return;
4851
}
4952

5053
Ref<EntityStore> entityRef = context.getEntity();
5154
if (entityRef == null) {
52-
System.out.println("[LandClaims] UseBlock: No entity ref in context");
55+
logger.atWarning().log("UseBlock: No entity ref in context");
5356
return;
5457
}
5558

5659
// Get the Player component from the entity
5760
Player player = store.getComponent(entityRef, Player.getComponentType());
5861
if (player == null) {
59-
System.out.println("[LandClaims] UseBlock: Entity is not a player");
62+
logger.atFine().log("UseBlock: Entity is not a player");
6063
return;
6164
}
6265

6366
UUID playerId = player.getUuid();
6467
String worldName = "default"; // TODO: Get actual world name
6568

66-
System.out.println("[LandClaims] UseBlock: Player " + playerId + " at " + targetBlock);
69+
logger.atInfo().log("UseBlock: Player %s at %s", playerId, targetBlock);
6770

6871
if (!claimManager.canInteract(playerId, worldName, targetBlock.getX(), targetBlock.getZ())) {
69-
System.out.println("[LandClaims] CANCELLING UseBlockEvent.Pre for player " + playerId);
72+
logger.atInfo().log("CANCELLING UseBlockEvent.Pre for player %s", playerId);
7073
event.setCancelled(true);
7174
}
7275
}

0 commit comments

Comments
 (0)