1
+ package betterbox .mine .game .betterranks ;
2
+
3
+ import org .bukkit .ChatColor ;
4
+ import org .bukkit .configuration .file .FileConfiguration ;
5
+ import org .bukkit .configuration .file .YamlConfiguration ;
6
+ import org .bukkit .plugin .java .JavaPlugin ;
7
+
8
+ import java .io .File ;
9
+ import java .io .IOException ;
10
+ import java .util .List ;
11
+ import java .util .UUID ;
12
+
13
+ public class Lang {
14
+ private final JavaPlugin plugin ;
15
+ private final PluginLogger pluginLogger ;
16
+ public String currentBonusString = "§6§lCurrent Bonus: " ;
17
+ public String noPermission = " You do not have permission to use this command!" ;
18
+ public String higherRank = " You already have a higher rank." ;
19
+ public String poolAlreadyUsed = " You already used a code from that pool!" ;
20
+ public String codeUsedSuccessfully = " Code used successfully!" ;
21
+ public String invalidOrExpiredCode = " Invalid or expired code!" ;
22
+ public String invalidCommand = "Invalid command usage. Check the command syntax." ;
23
+ public String timeLeftMessage = "Time left: " ;
24
+ public String timeLeftHelpMessage = " - returns time left on your current rank." ;
25
+ public String noExpiryTmeSet = "No expiry time set for this rank." ;
26
+ public String expired = "Expired" ;
27
+ public String rankExpiresIn = "Rank expires in: " ;
28
+
29
+
30
+ public Lang (JavaPlugin plugin , PluginLogger pluginLogger ) {
31
+ this .plugin = plugin ;
32
+ this .pluginLogger = pluginLogger ;
33
+ loadLangFile ();
34
+ }
35
+
36
+ public void loadLangFile () {
37
+ String transactionID = UUID .randomUUID ().toString ();
38
+ pluginLogger .log (PluginLogger .LogLevel .DEBUG , "Lang.loadLangFile called" , transactionID );
39
+ File langDir = new File (plugin .getDataFolder (), "lang" );
40
+ if (!langDir .exists ()) {
41
+ pluginLogger .log (PluginLogger .LogLevel .DEBUG , "Creating lang directory..." , transactionID );
42
+ langDir .mkdirs ();
43
+ }
44
+
45
+ File langFile = new File (langDir , "lang.yml" );
46
+ if (!langFile .exists ()) {
47
+ pluginLogger .log (PluginLogger .LogLevel .DEBUG , "Creating lang.yml file..." , transactionID );
48
+ createDefaultLangFile (langFile , transactionID );
49
+ }
50
+
51
+ pluginLogger .log (PluginLogger .LogLevel .DEBUG , "Loading lang.yml file..." , transactionID );
52
+ FileConfiguration config = YamlConfiguration .loadConfiguration (langFile );
53
+ validateAndLoadConfig (config , langFile , transactionID );
54
+ }
55
+
56
+ private void createDefaultLangFile (File langFile , String transactionID ) {
57
+ try {
58
+ pluginLogger .log (PluginLogger .LogLevel .DEBUG , "Creating lang.yml file..." , transactionID );
59
+ langFile .createNewFile ();
60
+ FileConfiguration config = YamlConfiguration .loadConfiguration (langFile );
61
+ setDefaultValues (config );
62
+ config .save (langFile );
63
+ pluginLogger .log (PluginLogger .LogLevel .DEBUG , "lang.yml file created successfully!" , transactionID );
64
+ } catch (IOException e ) {
65
+ pluginLogger .log (PluginLogger .LogLevel .ERROR , "Error creating lang.yml file: " + e .getMessage (), transactionID );
66
+ }
67
+ }
68
+
69
+ private void setDefaultValues (FileConfiguration config ) {
70
+ config .set ("currentBonusString" , currentBonusString );
71
+ config .set ("noPermission" , noPermission );
72
+ }
73
+
74
+ private void validateAndLoadConfig (FileConfiguration config , File langFile , String transactionID ) {
75
+ boolean saveRequired = false ;
76
+
77
+ if (!config .contains ("currentBonusString" )) {
78
+ config .set ("currentBonusString" , currentBonusString );
79
+ saveRequired = true ;
80
+ } else {
81
+ currentBonusString = config .getString ("currentBonusString" );
82
+ }
83
+
84
+ if (!config .contains ("noPermission" )) {
85
+ config .set ("noPermission" , noPermission );
86
+ saveRequired = true ;
87
+ } else {
88
+ noPermission = config .getString ("noPermission" );
89
+ }
90
+
91
+
92
+ if (saveRequired ) {
93
+ try {
94
+ config .save (langFile );
95
+ pluginLogger .log (PluginLogger .LogLevel .DEBUG , "lang.yml file updated with missing values" , transactionID );
96
+ } catch (IOException e ) {
97
+ pluginLogger .log (PluginLogger .LogLevel .ERROR , "Error saving lang.yml file: " + e .getMessage (), transactionID );
98
+ }
99
+ }
100
+ }
101
+ }
0 commit comments