· 10 years ago · Aug 10, 2016, 09:04 AM
1package klesh.config;
2
3import klesh.HardwareBan;
4import klesh.utils.format.StringFormatter;
5import org.bukkit.configuration.file.YamlConfiguration;
6
7import java.io.File;
8import java.io.IOException;
9import java.util.TimeZone;
10
11public class Config {
12
13 public static boolean debug = false;
14
15 public String broadcastBanMsgPattern = "Игрок :player был забанен :owner. Причина: :reason";
16 public String broadcastTempBanMsgPattern = "Игрок :player был забанен :owner до :elapsedtime. Причина: :reason";
17 public String broadcastWarnMsgPattern = "Игрок :player получил предупреждение от :owner. Причина: :reason";
18 public String broadcastKickMsgPattern = "Игрок :player был кикнут :owner. Причина: :reason";
19 public String unbanMsgPattern = "Игрок :player был разбанен.";
20 public String banMsgPattern = "Вы были забанены :owner. Причина: :reason";
21 public String tempBanMsgPattern = "Вы были забанены :owner до :elapsedtime по МСК. Причина: :reason";
22 public String kickMsgPattern = "Вы были кикнуты :owner. Причина: :reason";
23 public String warnMsgPattern = "Вы получили :curwarn из :maxwarn предупреждений!";
24 public String beginFindDupeAccMsgPattern = "РџРѕРёСЃРє дубликатов учетных записей РґР»СР:player...";
25 public String successBannedMsgPattern = "Игрок: :player(:hwid) успешно забанен!";
26 public String checkBanMsgPattern = "Выдан: :owner. Причина: :reason";
27 public String checkTempBanMsgPattern = "Выдан: :owner до :elapsedtime. Причина: :reason";
28 public String dupeJoinMsgPattern = "Игрок :player(:hwid) попыталсСРзайти РЅР° сервер СЃ мультиаккаунта!";
29 public String dupeFindHeaderPattern = "Оригинальный аккаунт: :originalacc. Ð â€Ð¡Ñ“бликаты: ";
30 public String findDupeAccMsg = "Найдены следуйщие дубликаты:";
31 public String dupeVerifiedLabel = "[Одобрен администратором]";
32 public String alreadyBanedMsg = "Игрок уже забанен!";
33 public String notFoungPlayerMsg = "Игрок не найден!";
34 public String notFoundAll = "Ничего не найдено!";
35 public String unknowErrorMsg = "НеизвестнаСРошибка!";
36 public String notBanSeflMsg = "Р’С‹ РЅРµ можете забанить себСÐ!";
37 public String notKickSeflMsg = "Р’С‹ РЅРµ можете кикнуть себСÐ!";
38 public String notWarnSeflMsg = "Вы не можете выдать предупреждение себе!";
39 public String defReason = "Без причины!";
40 public String defDupeReason = "Мультиаккаунт!";
41 public String maxWarnReason = "Максимальное количество предупреждений!";
42 public String kickedAllMsg = "Все игроки были кикнуты.";
43 public String defAdmin = "Сервер";
44
45 public final String DUPEACC_BYPASS_PERMISSION = "hardwareban.dupeacc.bypass";
46 public final String DUPEACC_ALERT_PERMISSION = "hardwareban.dupeacc.alert";
47
48 public ActionTypeOnMaxWarn actionOnMaxWarn = ActionTypeOnMaxWarn.kick;
49 public int maxWarnings = 3;
50 public TimeZone defTimeZone = TimeZone.getDefault();
51 public boolean banListAutoRefreshEnabled = true;
52 public int banListRefreshRate = 1000 * 60 * 30;
53
54 public String dbUser = "root";
55 public String dbPass = "pass";
56 public String dbName = "mysql://localhost/datebase";
57
58 public String hwidColl = "hardware_id";
59 public String userNameColl = "name";
60 public String regDateColl = "reg_date";
61 public String banlistTable = "hitech.banlist";
62 public String usersTable = "flyworld.fw_users";
63
64 public String findBanSQL = "SELECT * FROM :tb_banlist WHERE name = ':player'";
65 public String getHWIDSQL = "SELECT :coll_hwid FROM :tb_users WHERE name = ':player'";
66 public String setBanSQL = "INSERT INTO :tb_banlist (name, reason, admin, time, temptime, type) VALUES (':player', ':reason',':owner',:timestamp,0,0)";
67 public String setTempBanSQL = "INSERT INTO :tb_banlist (name, reason, admin, time, temptime, type) VALUES (':player', ':reason',':owner',:timestamp,:elapsed,1)";
68 public String getDuplicatesSQL = "SELECT :coll_username FROM :tb_users WHERE :coll_hwid = ':hwid' AND :coll_hwid NOT LIKE '%hidden%' ORDER BY :coll_regdate ASC";
69 public String isTryPlayerSQL = "SELECT :coll_username FROM :tb_users WHERE :coll_hwid = ':hwid' AND :coll_hwid NOT LIKE '%hidden%' ORDER BY :coll_regdate ASC";
70 public String unBanPlayerSQL = "DELETE FROM :tb_banlist WHERE name = ':player'";
71 public String getBanListSQL = "SELECT * FROM :tb_banlist WHERE type <= '1'";
72
73 public String createBanlistTableSQL =
74 " CREATE TABLE IF NOT EXISTS :tb_banlist (\n" +
75 " name varchar(32) NOT NULL,\n" +
76 " reason text NOT NULL,\n" +
77 " admin varchar(32) NOT NULL,\n" +
78 " time bigint(20) NOT NULL,\n" +
79 " temptime bigint(20) NOT NULL,\n" +
80 " id int(11) NOT NULL AUTO_INCREMENT,\n" +
81 " type int(1) NOT NULL DEFAULT '0',\n" +
82 " PRIMARY KEY (id) USING BTREE\n" +
83 " ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=12525;";
84
85 private HardwareBan plugin;
86
87 public Config(HardwareBan instance) {
88 this.plugin = instance;
89 }
90
91 public boolean load() {
92 File cfgFile = new File(plugin.getDataFolder() + "/config.yml");
93 YamlConfiguration config = YamlConfiguration.loadConfiguration(cfgFile);
94
95 config.addDefault("Debug", debug);
96 config.addDefault("TimeZone", defTimeZone.getID());
97 config.addDefault("BanListAutoRefresh.enabled", banListAutoRefreshEnabled);
98 config.addDefault("BanListAutoRefresh.rate", banListRefreshRate);
99 config.addDefault("Warnings.action", actionOnMaxWarn.toString());
100 config.addDefault("Warnings.max", maxWarnings);
101
102 config.addDefault("MySQL.username", dbUser);
103 config.addDefault("MySQL.password", dbPass);
104 config.addDefault("MySQL.database", dbName);
105 config.addDefault("MySQL.tables.users.name", usersTable);
106 config.addDefault("MySQL.tables.banlist.name", banlistTable);
107 config.addDefault("MySQL.tables.users.columns.hardwareid", hwidColl);
108 config.addDefault("MySQL.tables.users.columns.username", userNameColl);
109 config.addDefault("MySQL.tables.users.columns.regdate", regDateColl);
110
111 addDefaultLocalization(config);
112 config.options().copyDefaults(true);
113 try {
114 config.save(cfgFile);
115 } catch (IOException e) {
116 e.printStackTrace();
117 }
118 debug = config.getBoolean("Debug");
119 actionOnMaxWarn = ActionTypeOnMaxWarn.valueOf(config.getString("Warnings.action"));
120 maxWarnings = config.getInt("Warnings.max");
121 banListAutoRefreshEnabled = config.getBoolean("BanListAutoRefresh.enabled");
122 banListRefreshRate = config.getInt("BanListAutoRefresh.rate");
123 defTimeZone = TimeZone.getTimeZone(config.getString("TimeZone"));
124
125 dbUser = config.getString("MySQL.username");
126 dbPass = config.getString("MySQL.password");
127 dbName = config.getString("MySQL.database");
128 usersTable = config.getString("MySQL.tables.users.name");
129 banlistTable = config.getString("MySQL.tables.banlist.name");
130 hwidColl = config.getString("MySQL.tables.users.columns.hardwareid");
131 userNameColl = config.getString("MySQL.tables.users.columns.username");
132 regDateColl = config.getString("MySQL.tables.users.columns.regdate");
133
134
135 StringFormatter.getDefPropMap().put(":tb_users", usersTable);
136 StringFormatter.getDefPropMap().put(":tb_banlist", banlistTable);
137 StringFormatter.getDefPropMap().put(":coll_hwid", hwidColl);
138 StringFormatter.getDefPropMap().put(":coll_username", userNameColl);
139 StringFormatter.getDefPropMap().put(":coll_regdate", regDateColl);
140 StringFormatter.getDefPropMap().put(":maxwarn", String.valueOf(maxWarnings));
141
142 loadLocalization(config);
143 return true;
144 }
145
146 private void addDefaultLocalization(YamlConfiguration config) {
147 config.addDefault("Lang.broadcastBanMsgPattern", broadcastBanMsgPattern);
148 config.addDefault("Lang.broadcastTempBanMsgPattern", broadcastTempBanMsgPattern);
149 config.addDefault("Lang.broadcastWarnMsgPattern", broadcastWarnMsgPattern);
150 config.addDefault("Lang.broadcastKickMsgPattern", broadcastKickMsgPattern);
151 config.addDefault("Lang.unbanMsgPattern", unbanMsgPattern);
152 config.addDefault("Lang.banMsgPattern", banMsgPattern);
153 config.addDefault("Lang.tempBanMsgPattern", tempBanMsgPattern);
154 config.addDefault("Lang.kickMsgPattern", kickMsgPattern);
155 config.addDefault("Lang.warnMsgPattern", warnMsgPattern);
156 config.addDefault("Lang.beginFindDupeAccMsgPattern", beginFindDupeAccMsgPattern);
157 config.addDefault("Lang.dupeFindHeaderPattern", dupeFindHeaderPattern);
158 config.addDefault("Lang.successBannedMsgPattern", successBannedMsgPattern);
159 config.addDefault("Lang.checkBanMsgPattern", checkBanMsgPattern);
160 config.addDefault("Lang.checkTempBanMsgPattern", checkTempBanMsgPattern);
161 config.addDefault("Lang.dupeJoinMsgPattern", dupeJoinMsgPattern);
162 config.addDefault("Lang.findDupeAccMsg", findDupeAccMsg);
163 config.addDefault("Lang.alreadyBanedMsg", alreadyBanedMsg);
164 config.addDefault("Lang.notFoungPlayerMsg", notFoungPlayerMsg);
165 config.addDefault("Lang.notFoundAll", notFoundAll);
166 config.addDefault("Lang.unknowErrorMsg", unknowErrorMsg);
167 config.addDefault("Lang.notBanSeflMsg", notBanSeflMsg);
168 config.addDefault("Lang.notKickSeflMsg", notKickSeflMsg);
169 config.addDefault("Lang.notWarnSeflMsg", notWarnSeflMsg);
170 config.addDefault("Lang.defReason", defReason);
171 config.addDefault("Lang.defDupeReason", defDupeReason);
172 config.addDefault("Lang.maxWarnReason", maxWarnReason);
173 config.addDefault("Lang.kickedAllMsg", kickedAllMsg);
174
175 config.addDefault("Lang.defAdmin", defAdmin);
176 }
177
178 private void loadLocalization(YamlConfiguration config) {
179 broadcastBanMsgPattern = config.getString("Lang.broadcastBanMsgPattern");
180 broadcastTempBanMsgPattern = config.getString("Lang.broadcastTempBanMsgPattern");
181 broadcastWarnMsgPattern = config.getString("Lang.broadcastWarnMsgPattern");
182 broadcastKickMsgPattern = config.getString("Lang.broadcastKickMsgPattern");
183 unbanMsgPattern = config.getString("Lang.unbanMsgPattern");
184 banMsgPattern = config.getString("Lang.banMsgPattern");
185 tempBanMsgPattern = config.getString("Lang.tempBanMsgPattern");
186 kickMsgPattern = config.getString("Lang.kickMsgPattern");
187 warnMsgPattern = config.getString("Lang.warnMsgPattern");
188 beginFindDupeAccMsgPattern = config.getString("Lang.beginFindDupeAccMsgPattern");
189 dupeFindHeaderPattern = config.getString("Lang.dupeFindHeaderPattern");
190 successBannedMsgPattern = config.getString("Lang.successBannedMsgPattern");
191 checkBanMsgPattern = config.getString("Lang.checkBanMsgPattern");
192 checkTempBanMsgPattern = config.getString("Lang.checkTempBanMsgPattern");
193 dupeJoinMsgPattern = config.getString("Lang.dupeJoinMsgPattern");
194 findDupeAccMsg = config.getString("Lang.findDupeAccMsg");
195 alreadyBanedMsg = config.getString("Lang.alreadyBanedMsg");
196 notFoungPlayerMsg = config.getString("Lang.notFoungPlayerMsg");
197 notFoundAll = config.getString("Lang.notFoundAll");
198 unknowErrorMsg = config.getString("Lang.unknowErrorMsg");
199 notBanSeflMsg = config.getString("Lang.notBanSeflMsg");
200 notKickSeflMsg = config.getString("Lang.notKickSeflMsg");
201 notWarnSeflMsg = config.getString("Lang.notWarnSeflMsg");
202 defReason = config.getString("Lang.defReason");
203 defDupeReason = config.getString("Lang.defDupeReason");
204 maxWarnReason = config.getString("Lang.maxWarnReason");
205 kickedAllMsg = config.getString("Lang.kickedAllMsg");
206 defAdmin = config.getString("Lang.defAdmin");
207 }
208}