Skip to content

Commit c1f01e8

Browse files
committed
Refactor config sections to proxied beans with Fluent API
1 parent b6567f6 commit c1f01e8

File tree

56 files changed

+316
-378
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+316
-378
lines changed

eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java

Lines changed: 45 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,38 @@
22

33
import com.eternalcode.core.configuration.AbstractConfigurationFile;
44
import com.eternalcode.core.database.DatabaseConfig;
5+
import com.eternalcode.core.database.DatabaseSettings;
56
import com.eternalcode.core.feature.afk.AfkConfig;
7+
import com.eternalcode.core.feature.afk.AfkSettings;
68
import com.eternalcode.core.feature.automessage.AutoMessageConfig;
9+
import com.eternalcode.core.feature.automessage.AutoMessageSettings;
710
import com.eternalcode.core.feature.butcher.ButcherConfig;
11+
import com.eternalcode.core.feature.butcher.ButcherSettings;
812
import com.eternalcode.core.feature.chat.ChatConfig;
13+
import com.eternalcode.core.feature.chat.ChatSettings;
914
import com.eternalcode.core.feature.helpop.HelpOpConfig;
15+
import com.eternalcode.core.feature.helpop.HelpOpSettings;
1016
import com.eternalcode.core.feature.home.HomesConfig;
17+
import com.eternalcode.core.feature.home.HomesSettings;
1118
import com.eternalcode.core.feature.jail.JailConfig;
19+
import com.eternalcode.core.feature.jail.JailSettings;
1220
import com.eternalcode.core.feature.lightning.LightningConfig;
13-
import com.eternalcode.core.feature.randomteleport.RandomTeleportSettingsImpl;
21+
import com.eternalcode.core.feature.lightning.LightningSettings;
22+
import com.eternalcode.core.feature.randomteleport.RandomTeleportConfig;
23+
import com.eternalcode.core.feature.randomteleport.RandomTeleportSettings;
1424
import com.eternalcode.core.feature.repair.RepairConfig;
25+
import com.eternalcode.core.feature.repair.RepairSettings;
1526
import com.eternalcode.core.feature.serverlinks.ServerLinksConfig;
27+
import com.eternalcode.core.feature.serverlinks.ServerLinksSettings;
1628
import com.eternalcode.core.feature.spawn.SpawnJoinConfig;
29+
import com.eternalcode.core.feature.spawn.SpawnJoinSettings;
1730
import com.eternalcode.core.feature.spawn.SpawnSettings;
1831
import com.eternalcode.core.feature.teleportrequest.TeleportRequestConfig;
32+
import com.eternalcode.core.feature.teleportrequest.TeleportRequestSettings;
1933
import com.eternalcode.core.feature.vanish.VanishConfig;
2034
import com.eternalcode.core.feature.vanish.VanishSettings;
2135
import com.eternalcode.core.feature.warp.WarpConfig;
36+
import com.eternalcode.core.feature.warp.WarpSettings;
2237
import com.eternalcode.core.injector.annotations.Bean;
2338
import com.eternalcode.core.injector.annotations.component.ConfigurationFile;
2439
import eu.okaeri.configs.OkaeriConfig;
@@ -41,28 +56,29 @@
4156
"# Source Code: https://github.com/EternalCodeTeam/EternalCore",
4257
"#",
4358
})
44-
4559
@ConfigurationFile
4660
public class PluginConfiguration extends AbstractConfigurationFile {
4761

4862
@Comment("# Whether the player should receive information about new plugin updates upon joining the server")
4963
public boolean shouldReceivePluginUpdates = true;
5064

65+
@Bean(proxied = DatabaseSettings.class)
5166
@Comment("")
5267
@Comment("# Database Configuration")
5368
@Comment("# Settings responsible for the database connection")
54-
public DatabaseConfig database = new DatabaseConfig();
69+
DatabaseConfig database = new DatabaseConfig();
5570

71+
@Bean(proxied = SpawnJoinSettings.class)
5672
@Comment("")
5773
@Comment("# Spawn & Join Configuration")
5874
@Comment("# Settings responsible for player spawn and join behavior")
59-
public SpawnJoinConfig join = new SpawnJoinConfig();
75+
SpawnJoinConfig join = new SpawnJoinConfig();
6076

61-
@Bean
77+
@Bean(proxied = TeleportRequestSettings.class)
6278
@Comment("")
6379
@Comment("# Teleport Request Configuration")
6480
@Comment("# Settings for teleport requests between players")
65-
public TeleportRequestConfig teleportAsk = new TeleportRequestConfig();
81+
TeleportRequestConfig teleportAsk = new TeleportRequestConfig();
6682

6783
@Bean
6884
@Comment("")
@@ -94,17 +110,17 @@ public Duration teleportationTimeToSpawn() {
94110
}
95111
}
96112

97-
@Bean
113+
@Bean(proxied = RandomTeleportSettings.class)
98114
@Comment("")
99115
@Comment("# Random Teleport Configuration")
100116
@Comment("# Settings for random teleportation feature")
101-
public RandomTeleportSettingsImpl randomTeleport = new RandomTeleportSettingsImpl();
117+
RandomTeleportConfig randomTeleport = new RandomTeleportConfig();
102118

103-
@Bean
119+
@Bean(proxied = HomesSettings.class)
104120
@Comment("")
105121
@Comment("# Homes Configuration")
106122
@Comment("# Settings for player home management")
107-
public HomesConfig homes = new HomesConfig();
123+
HomesConfig homes = new HomesConfig();
108124

109125
@Comment("")
110126
@Comment("# Sound Configuration")
@@ -132,21 +148,23 @@ public static class Sounds extends OkaeriConfig {
132148
public float afterChatMessagePitch = 1F;
133149
}
134150

135-
@Bean
151+
@Bean(proxied = ChatSettings.class)
136152
@Comment("")
137153
@Comment("# Chat Configuration")
138154
@Comment("# Settings for chat management and formatting")
139-
public ChatConfig chat = new ChatConfig();
155+
ChatConfig chat = new ChatConfig();
140156

157+
@Bean(proxied = HelpOpSettings.class)
141158
@Comment("")
142159
@Comment("# HelpOp Configuration")
143160
@Comment("# Settings for the help operator system")
144-
public HelpOpConfig helpOp = new HelpOpConfig();
161+
HelpOpConfig helpOp = new HelpOpConfig();
145162

163+
@Bean(proxied = RepairSettings.class)
146164
@Comment("")
147165
@Comment("# Repair Configuration")
148166
@Comment("# Settings for item repair functionality")
149-
public RepairConfig repair = new RepairConfig();
167+
RepairConfig repair = new RepairConfig();
150168

151169
@Comment("")
152170
@Comment("# Format Configuration")
@@ -158,11 +176,11 @@ public static class Format extends OkaeriConfig {
158176
public String separator = "<gray>,</gray> ";
159177
}
160178

161-
@Bean
179+
@Bean(proxied = AfkSettings.class)
162180
@Comment("")
163181
@Comment("# AFK Configuration")
164182
@Comment("# Settings for Away From Keyboard detection and management")
165-
public AfkConfig afk = new AfkConfig();
183+
AfkConfig afk = new AfkConfig();
166184

167185
@Comment("")
168186
@Comment("# Items Configuration")
@@ -184,35 +202,37 @@ public static class Items extends OkaeriConfig {
184202
public boolean dropOnFullInventory = true;
185203
}
186204

205+
@Bean(proxied = WarpSettings.class)
187206
@Comment("")
188207
@Comment("# Warp Configuration")
189208
@Comment("# Settings for warp points management")
190-
public WarpConfig warp = new WarpConfig();
209+
WarpConfig warp = new WarpConfig();
191210

211+
@Bean(proxied = ButcherSettings.class)
192212
@Comment("")
193213
@Comment("# Butcher Configuration")
194214
@Comment("# Settings for entity removal functionality")
195-
public ButcherConfig butcher = new ButcherConfig();
215+
ButcherConfig butcher = new ButcherConfig();
196216

197-
@Bean
217+
@Bean(proxied = AutoMessageSettings.class)
198218
@Comment("")
199219
@Comment("# Auto Message Configuration")
200220
@Comment("# Settings for automatic message broadcasting")
201-
public AutoMessageConfig autoMessage = new AutoMessageConfig();
221+
AutoMessageConfig autoMessage = new AutoMessageConfig();
202222

203-
@Bean
223+
@Bean(proxied = JailSettings.class)
204224
@Comment("")
205225
@Comment("# Jail Configuration")
206226
@Comment("# Settings for player jail system")
207-
public JailConfig jail = new JailConfig();
227+
JailConfig jail = new JailConfig();
208228

209-
@Bean
229+
@Bean(proxied = LightningSettings.class)
210230
@Comment("")
211231
@Comment("# Lightning Configuration")
212232
@Comment("# Settings for lightning strike effects")
213-
public LightningConfig lightning = new LightningConfig();
233+
LightningConfig lightning = new LightningConfig();
214234

215-
@Bean
235+
@Bean(proxied = ServerLinksSettings.class)
216236
@Comment("")
217237
@Comment("# Server Links Configuration")
218238
@Comment("# Settings for server link management")

eternalcore-core/src/main/java/com/eternalcode/core/database/DatabaseConfig.java

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
import eu.okaeri.configs.OkaeriConfig;
44
import eu.okaeri.configs.annotation.Comment;
5+
import lombok.Getter;
6+
import lombok.experimental.Accessors;
57

68
@SuppressWarnings({"FieldMayBeFinal", "FieldCanBeLocal"})
9+
@Getter
10+
@Accessors(fluent = true)
711
public class DatabaseConfig extends OkaeriConfig implements DatabaseSettings {
812

913
@Comment({"Type of the database driver (e.g., SQLITE, H2, MYSQL, MARIADB, POSTGRESQL).", "Determines the "
@@ -38,49 +42,4 @@ public class DatabaseConfig extends OkaeriConfig implements DatabaseSettings {
3842

3943
@Comment("Connection timeout in milliseconds. This is the maximum time to wait for a connection from the pool.")
4044
public int timeout = 30000;
41-
42-
@Override
43-
public DatabaseDriverType getDriverType() {
44-
return this.databaseType;
45-
}
46-
47-
@Override
48-
public String getHostname() {
49-
return this.hostname;
50-
}
51-
52-
@Override
53-
public int getPort() {
54-
return this.port;
55-
}
56-
57-
@Override
58-
public String getDatabase() {
59-
return this.database;
60-
}
61-
62-
@Override
63-
public String getUsername() {
64-
return this.username;
65-
}
66-
67-
@Override
68-
public String getPassword() {
69-
return this.password;
70-
}
71-
72-
@Override
73-
public boolean isSSL() {
74-
return this.ssl;
75-
}
76-
77-
@Override
78-
public int poolSize() {
79-
return this.poolSize;
80-
}
81-
82-
@Override
83-
public int timeout() {
84-
return this.timeout;
85-
}
8645
}

eternalcore-core/src/main/java/com/eternalcode/core/database/DatabaseManager.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,31 +41,31 @@ public void connect() {
4141

4242
this.dataSource.setMaximumPoolSize(settings.poolSize());
4343
this.dataSource.setConnectionTimeout(settings.timeout());
44-
this.dataSource.setUsername(settings.getUsername());
45-
this.dataSource.setPassword(settings.getPassword());
44+
this.dataSource.setUsername(settings.username());
45+
this.dataSource.setPassword(settings.password());
4646

47-
DatabaseDriverType type = settings.getDriverType();
47+
DatabaseDriverType type = settings.databaseType();
4848
this.dataSource.setDriverClassName(type.getDriver());
4949

5050
String jdbcUrl = switch (type) {
5151
case H2, SQLITE -> type.formatUrl(dataFolder);
5252
case POSTGRESQL -> type.formatUrl(
53-
settings.getHostname(),
54-
settings.getPort(),
55-
settings.getDatabase(),
56-
DatabaseConnectionDriverConstant.sslParamForPostgreSQL(settings.isSSL())
53+
settings.hostname(),
54+
settings.port(),
55+
settings.database(),
56+
DatabaseConnectionDriverConstant.sslParamForPostgreSQL(settings.ssl())
5757
);
5858
case MYSQL -> type.formatUrl(
59-
settings.getHostname(),
60-
settings.getPort(),
61-
settings.getDatabase(),
62-
DatabaseConnectionDriverConstant.sslParamForMySQL(settings.isSSL())
59+
settings.hostname(),
60+
settings.port(),
61+
settings.database(),
62+
DatabaseConnectionDriverConstant.sslParamForMySQL(settings.ssl())
6363
);
6464
case MARIADB -> type.formatUrl(
65-
settings.getHostname(),
66-
settings.getPort(),
67-
settings.getDatabase(),
68-
String.valueOf(settings.isSSL())
65+
settings.hostname(),
66+
settings.port(),
67+
settings.database(),
68+
String.valueOf(settings.ssl())
6969
);
7070
};
7171

eternalcore-core/src/main/java/com/eternalcode/core/database/DatabaseManagerSetup.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
class DatabaseManagerSetup {
1313

1414
@Bean
15-
DatabaseManager databaseManager(PluginConfiguration pluginConfiguration, Logger logger, File dataFolder) {
16-
DatabaseManager databaseManager = new DatabaseManager(logger, dataFolder, pluginConfiguration.database);
15+
DatabaseManager databaseManager(DatabaseSettings databaseSettings, Logger logger, File dataFolder) {
16+
DatabaseManager databaseManager = new DatabaseManager(logger, dataFolder, databaseSettings);
1717

1818
databaseManager.connect();
1919
return databaseManager;

eternalcore-core/src/main/java/com/eternalcode/core/database/DatabaseSettings.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22

33
public interface DatabaseSettings {
44

5-
DatabaseDriverType getDriverType();
5+
DatabaseDriverType databaseType();
66

7-
String getHostname();
7+
String hostname();
88

9-
int getPort();
9+
int port();
1010

11-
String getDatabase();
11+
String database();
1212

13-
String getUsername();
13+
String username();
1414

15-
String getPassword();
15+
String password();
1616

17-
boolean isSSL();
17+
boolean ssl();
1818

1919
int poolSize();
2020

eternalcore-core/src/main/java/com/eternalcode/core/feature/afk/AfkCommand.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
import static com.eternalcode.core.feature.afk.AfkCommand.AFK_BYPASS_PERMISSION;
44

55
import com.eternalcode.annotations.scan.command.DescriptionDocs;
6-
76
import com.eternalcode.annotations.scan.permission.PermissionDocs;
8-
import com.eternalcode.core.configuration.implementation.PluginConfiguration;
97
import com.eternalcode.core.delay.Delay;
108
import com.eternalcode.core.injector.annotations.Inject;
119
import com.eternalcode.core.notice.NoticeService;
@@ -30,16 +28,16 @@ class AfkCommand {
3028
static final String AFK_BYPASS_PERMISSION = "eternalcore.afk.bypass";
3129

3230
private final NoticeService noticeService;
33-
private final PluginConfiguration pluginConfiguration;
31+
private final AfkSettings afkSettings;
3432
private final AfkService afkService;
3533
private final Delay<UUID> delay;
3634

3735
@Inject
38-
AfkCommand(NoticeService noticeService, PluginConfiguration pluginConfiguration, AfkService afkService) {
36+
AfkCommand(NoticeService noticeService, AfkSettings afkSettings, AfkService afkService) {
3937
this.noticeService = noticeService;
40-
this.pluginConfiguration = pluginConfiguration;
38+
this.afkSettings = afkSettings;
4139
this.afkService = afkService;
42-
this.delay = new Delay<>(() -> this.pluginConfiguration.afk.getAfkDelay());
40+
this.delay = new Delay<>(() -> this.afkSettings.afkCommandDelay());
4341
}
4442

4543
@Execute
@@ -66,6 +64,6 @@ void execute(@Context Player player) {
6664
}
6765

6866
this.afkService.switchAfk(uuid, AfkReason.COMMAND);
69-
this.delay.markDelay(uuid, this.pluginConfiguration.afk.getAfkDelay());
67+
this.delay.markDelay(uuid, this.afkSettings.afkCommandDelay());
7068
}
7169
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/afk/AfkConfig.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,4 @@ public class AfkConfig extends OkaeriConfig implements AfkSettings {
3030

3131
@Comment("# Should a player be kicked from the game when marked as AFK?")
3232
public boolean kickOnAfk = false;
33-
34-
@Override
35-
public Duration getAfkDelay() {
36-
return this.afkCommandDelay;
37-
}
38-
39-
@Override
40-
public Duration getAfkInactivityTime() {
41-
return this.afkInactivityTime;
42-
}
4333
}

0 commit comments

Comments
 (0)