Skip to content

Commit 0f6560e

Browse files
committed
refactor: replace log usage with pluginLogger across modules and remove unused methods
1 parent 83e9312 commit 0f6560e

8 files changed

Lines changed: 95 additions & 194 deletions

File tree

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@ http-port: 8080
3939
# Recommended: 30-120 seconds depending on server performance
4040
# Default: 60
4141
update-interval: 60
42-
```
43-
44-
### Configuration Options
4542

46-
| Option | Default | Description |
47-
|-------------------|---------|---------------------------------------------------------------------------------------------|
48-
| `http-port` | 8080 | Port for the web interface. The map will be accessible at `http://localhost:<port>` |
49-
| `update-interval` | 60 | Interval in seconds between processing modified chunks. Lower = faster updates but more CPU |
43+
# Whether to render blocks underwater
44+
# If disabled (false), water surfaces will show biome water color directly
45+
# If enabled (true), underwater blocks will be visible with water tint applied
46+
# Disabling this can improve map readability in ocean/river areas
47+
# Default: false
48+
render-underwater-blocks: false
49+
```
5050
5151
## Usage
5252

img.png

-1.24 MB
Loading

src/main/java/me/daoge/allaymap/AllayMap.java

Lines changed: 19 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33
import eu.okaeri.configs.ConfigManager;
44
import eu.okaeri.configs.yaml.snakeyaml.YamlSnakeYamlConfigurer;
55
import lombok.Getter;
6-
import lombok.extern.slf4j.Slf4j;
76
import me.daoge.allaymap.httpd.MapHttpServer;
87
import me.daoge.allaymap.listener.WorldEventListener;
9-
import me.daoge.allaymap.render.MapRenderer;
108
import me.daoge.allaymap.render.MapTileManager;
119
import org.allaymc.api.plugin.Plugin;
1210
import org.allaymc.api.server.Server;
@@ -17,39 +15,36 @@
1715

1816
/**
1917
* AllayMap - A minimalistic and lightweight world map viewer for Allay servers.
20-
* Uses vanilla map rendering style similar to squaremap.
2118
*
2219
* @author daoge_cmd
2320
*/
24-
@Slf4j
21+
@Getter
2522
public class AllayMap extends Plugin {
2623

2724
@Getter
2825
private static AllayMap instance;
2926

30-
@Getter
31-
private AllayMapConfig config;
27+
{
28+
instance = this;
29+
}
3230

33-
@Getter
31+
private AllayMapConfig config;
3432
private MapTileManager tileManager;
35-
36-
@Getter
3733
private MapHttpServer httpServer;
3834

3935
@Override
4036
public void onLoad() {
41-
instance = this;
42-
log.info("AllayMap loading...");
37+
this.pluginLogger.info("AllayMap loading...");
4338

4439
// Load configuration
4540
Path dataDir = getPluginContainer().dataFolder();
4641
try {
4742
Files.createDirectories(dataDir);
4843
} catch (IOException e) {
49-
log.error("Failed to create data directory", e);
44+
this.pluginLogger.error("Failed to create data directory", e);
5045
}
5146

52-
config = ConfigManager.create(AllayMapConfig.class, cfg -> {
47+
this.config = ConfigManager.create(AllayMapConfig.class, cfg -> {
5348
cfg.withConfigurer(new YamlSnakeYamlConfigurer());
5449
cfg.withBindFile(dataDir.resolve("config.yml"));
5550
cfg.withRemoveOrphans(true);
@@ -60,48 +55,26 @@ public void onLoad() {
6055

6156
@Override
6257
public void onEnable() {
63-
// Initialize colormap resources
64-
MapRenderer.initColormaps();
65-
6658
// Initialize tile manager
67-
tileManager = new MapTileManager(getPluginContainer().dataFolder());
59+
this.tileManager = new MapTileManager(getPluginContainer().dataFolder());
6860

6961
// Register world event listener for chunk/block changes
70-
WorldEventListener eventListener = new WorldEventListener(tileManager.getRenderQueue());
71-
Server.getInstance().getEventBus().registerListener(eventListener);
72-
log.info("Registered world event listener for map updates");
73-
74-
// Schedule periodic render task
75-
int updateIntervalTicks = config.updateInterval() * 20; // Convert seconds to ticks
76-
Server.getInstance().getScheduler().scheduleRepeating(this, () -> {
77-
tileManager.processDirtyChunks();
78-
return true; // Continue running
79-
}, updateIntervalTicks);
80-
log.info("Scheduled map render task every {} seconds", config.updateInterval());
62+
Server.getInstance().getEventBus().registerListener(new WorldEventListener(this.tileManager.getRenderQueue()));
8163

8264
// Start HTTP server
83-
httpServer = new MapHttpServer(this, tileManager, config.httpPort());
65+
this.httpServer = new MapHttpServer(this, this.tileManager, this.config.httpPort());
8466
try {
85-
httpServer.start();
86-
log.info("AllayMap web interface available at http://localhost:{}", config.httpPort());
67+
this.httpServer.start();
68+
this.pluginLogger.info("AllayMap web interface available at http://localhost:{}", this.config.httpPort());
8769
} catch (IOException e) {
88-
log.error("Failed to start HTTP server on port {}", config.httpPort(), e);
89-
log.info("Try changing the port in config.yml");
90-
return;
70+
this.pluginLogger.error("Failed to start HTTP server on port {}", this.config.httpPort(), e);
71+
this.pluginLogger.info("Try changing the port in config.yml");
9172
}
9273

9374
// Register commands
9475
registerCommands();
9576

96-
log.info("AllayMap enabled successfully!");
97-
}
98-
99-
@Override
100-
public void onDisable() {
101-
if (httpServer != null) {
102-
httpServer.stop();
103-
}
104-
log.info("AllayMap disabled");
77+
this.pluginLogger.info("AllayMap enabled successfully!");
10578
}
10679

10780
private void registerCommands() {
@@ -110,22 +83,8 @@ private void registerCommands() {
11083
}
11184

11285
@Override
113-
public boolean isReloadable() {
114-
return true;
115-
}
116-
117-
@Override
118-
public void reload() {
119-
log.info("Reloading AllayMap...");
120-
121-
// Reload config
122-
config.load(true);
123-
124-
// Clear tile cache
125-
if (tileManager != null) {
126-
tileManager.clearCache();
127-
}
128-
129-
log.info("AllayMap reloaded");
86+
public void onDisable() {
87+
this.httpServer.stop();
88+
this.pluginLogger.info("AllayMap disabled");
13089
}
13190
}

src/main/java/me/daoge/allaymap/httpd/MapHttpServer.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
/**
3030
* Embedded HTTP server for serving map tiles and web interface.
3131
*/
32-
@Slf4j
3332
public class MapHttpServer {
3433

3534
private static final Map<String, String> MIME_TYPES = new HashMap<>();
@@ -78,7 +77,7 @@ public void start() throws IOException {
7877
server.setExecutor(Executors.newVirtualThreadPerTaskExecutor());
7978
server.start();
8079

81-
log.info("AllayMap web server started on port {}", port);
80+
AllayMap.getInstance().getPluginLogger().info("AllayMap web server started on port {}", port);
8281
}
8382

8483
/**
@@ -87,7 +86,7 @@ public void start() throws IOException {
8786
public void stop() {
8887
if (server != null) {
8988
server.stop(0);
90-
log.info("AllayMap web server stopped");
89+
AllayMap.getInstance().getPluginLogger().info("AllayMap web server stopped");
9190
}
9291
}
9392

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
package me.daoge.allaymap.listener;
22

33
import lombok.RequiredArgsConstructor;
4-
import lombok.extern.slf4j.Slf4j;
54
import me.daoge.allaymap.render.RenderQueue;
65
import org.allaymc.api.eventbus.EventHandler;
76
import org.allaymc.api.eventbus.event.block.BlockPlaceEvent;
87
import org.allaymc.api.eventbus.event.world.ChunkLoadEvent;
8+
import org.allaymc.api.eventbus.event.world.WorldUnloadEvent;
99

1010
/**
1111
* Listens for world events and marks affected regions as dirty for re-rendering.
1212
*/
13-
@Slf4j
1413
@RequiredArgsConstructor
1514
public class WorldEventListener {
1615

1716
private final RenderQueue renderQueue;
1817

1918
@EventHandler
20-
public void onChunkLoad(ChunkLoadEvent event) {
19+
private void onChunkLoad(ChunkLoadEvent event) {
2120
var chunk = event.getChunk();
2221
var dimension = event.getDimension();
2322
// Only mark dirty if this region hasn't been rendered yet
@@ -26,9 +25,17 @@ public void onChunkLoad(ChunkLoadEvent event) {
2625
}
2726

2827
@EventHandler
29-
public void onBlockPlace(BlockPlaceEvent event) {
28+
private void onBlockPlace(BlockPlaceEvent event) {
3029
var pos = event.getBlock().getPosition();
3130
var dimension = event.getBlock().getDimension();
3231
renderQueue.markBlockDirty(dimension, pos.x(), pos.z());
3332
}
33+
34+
@EventHandler
35+
private void onWorldUnload(WorldUnloadEvent event) {
36+
var world = event.getWorld();
37+
for (var dimension : world.getDimensions().values()) {
38+
renderQueue.removeDimension(dimension);
39+
}
40+
}
3441
}

src/main/java/me/daoge/allaymap/render/MapRenderer.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,16 @@
1919
import java.util.concurrent.CompletableFuture;
2020

2121
/**
22-
* MapRenderer handles the rendering of chunks to images following vanilla map style.
23-
* Based on AllayMC's ItemFilledMapBaseComponentImpl rendering algorithm.
22+
* MapRenderer handles the rendering of chunks to images.
2423
*/
25-
@Slf4j
2624
public class MapRenderer {
2725

28-
public static final int CHUNK_TILE_SIZE = 16; // 1 pixel per block
29-
public static final int CHUNK_SIZE = 16;
30-
public static final int SEA_LEVEL = 62;
26+
private static final int CHUNK_TILE_SIZE = 16;
27+
private static final int CHUNK_SIZE = 16;
28+
private static final int SEA_LEVEL = 62;
3129

3230
// Color for unloaded/missing chunks
33-
private static final Color UNLOADED_CHUNK_COLOR = new Color(0x1a1a2e); // Dark blue-gray
31+
private static final Color UNLOADED_CHUNK_COLOR = new Color(0x1a1a2e);
3432
private static final Color BIRCH_FOLIAGE = new Color(0x80a755);
3533
private static final Color EVERGREEN_FOLIAGE = new Color(0x619961);
3634
private static final Color DRY_FOLIAGE_SPECIAL_A = new Color(0x7b5334);
@@ -50,14 +48,18 @@ public class MapRenderer {
5048
private static volatile BufferedImage DRY_FOLIAGE_COLORMAP;
5149
private static volatile BufferedImage GRASS_COLORMAP;
5250

51+
static {
52+
initColormaps();
53+
}
54+
5355
/**
5456
* Initialize colormaps from resources
5557
*/
56-
public static void initColormaps() {
58+
private static void initColormaps() {
5759
FOLIAGE_COLORMAP = readColormap("colormap/foliage.png");
5860
DRY_FOLIAGE_COLORMAP = readColormap("colormap/dry_foliage.png");
5961
GRASS_COLORMAP = readColormap("colormap/grass.png");
60-
log.info("Colormaps loaded successfully");
62+
AllayMap.getInstance().getPluginLogger().info("Colormaps loaded successfully");
6163
}
6264

6365
@SneakyThrows
@@ -109,15 +111,15 @@ public CompletableFuture<BufferedImage> renderChunk(Dimension dimension, int chu
109111
image.setRGB(0, 0, CHUNK_TILE_SIZE, CHUNK_TILE_SIZE, pixels, 0, CHUNK_TILE_SIZE);
110112
return image;
111113
}, Server.getInstance().getVirtualThreadPool()).exceptionally(e -> {
112-
log.error("Error rendering chunk ({}, {})", chunkX, chunkZ, e);
114+
AllayMap.getInstance().getPluginLogger().error("Error rendering chunk ({}, {})", chunkX, chunkZ, e);
113115
return createEmptyChunkTile();
114116
});
115117
}
116118

117119
/**
118120
* Create an empty 16x16 tile (for unloaded chunks)
119121
*/
120-
public BufferedImage createEmptyChunkTile() {
122+
private BufferedImage createEmptyChunkTile() {
121123
BufferedImage image = new BufferedImage(CHUNK_TILE_SIZE, CHUNK_TILE_SIZE, BufferedImage.TYPE_INT_ARGB);
122124
int color = UNLOADED_CHUNK_COLOR.getRGB();
123125
for (int i = 0; i < CHUNK_TILE_SIZE * CHUNK_TILE_SIZE; i++) {

0 commit comments

Comments
 (0)