-
-
Notifications
You must be signed in to change notification settings - Fork 104
/
Settings.java
428 lines (308 loc) · 13.9 KB
/
Settings.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
package net.aufdemrand.denizen;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizencore.objects.Duration;
import net.aufdemrand.denizencore.utilities.CoreUtilities;
public class Settings {
/*
# Scripts location settings
*/
public static boolean useDefaultScriptPath() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Scripts location.Use default script folder", true);
}
public static String getAlternateScriptPath() {
return DenizenAPI.getCurrentInstance().getConfig()
.getString("Scripts location.Alternative folder path", "plugins/Denizen");
}
/*
# Whether Denizen should display debug in the console
*/
public static boolean showDebug() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Debug.Show", true);
}
public static int consoleWidth() {
return DenizenAPI.getCurrentInstance().getConfig()
.getInt("Debug.Console width", 60);
}
public static int trimLength() {
return DenizenAPI.getCurrentInstance().getConfig()
.getInt("Debug.Trim length", 512);
}
public static boolean showExHelp() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Debug.Ex command help", true);
}
public static boolean allowConsoleRedirection() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Debug.Allow console redirection", false);
}
public static boolean canRecordStats() {
return DenizenAPI.getCurrentInstance().getConfig().getBoolean("Debug.Stats", true);
}
/*
# Sets the default speed between execution of commands in queues
*/
public static String scriptQueueSpeed() {
String delay = DenizenAPI.getCurrentInstance().getConfig()
.getString("Scripts.Queue speed", "0.5s");
// Check for users setting delay to 0, which will in turn lock up the server
try {
if (Duration.valueOf(delay).getTicks() < 1) {
delay = "1t";
}
}
catch (Exception e) {
delay = "0.5s";
}
return delay;
}
/*
# Whether the Health trait should be enabled by default
*/
public static boolean healthTraitEnabledByDefault() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Traits.Health.Enabled", false);
}
/*
# Whether NPCs with the Health trait should respawn after being killed
*/
public static boolean healthTraitRespawnEnabled() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Traits.Health.Respawn.Enabled", true);
}
/*
# Whether NPCs with the Health trait should have a death animation
*/
public static boolean healthTraitAnimatedDeathEnabled() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Traits.Health.Animated death.Enabled", true);
}
/*
# How long it should take for NPCs with the Health trait to respawn
*/
public static String healthTraitRespawnDelay() {
return DenizenAPI.getCurrentInstance().getConfig()
.getString("Traits.Health.Respawn.Delay", "10s");
}
/*
# Whether a certain trigger is enabled by default or not
*/
public static boolean triggerEnabled(String triggerName) {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Triggers." + String.valueOf(triggerName.charAt(0)).toUpperCase()
+ CoreUtilities.toLowerCase(triggerName.substring(1)) + ".Enabled", true);
}
/*
# Default duration of cooldown set to Denizens for when a trigger is
# triggered. Not all triggers may use this, it is optional!
*/
public static double triggerDefaultCooldown(String triggerName) {
return Duration.valueOf(DenizenAPI.getCurrentInstance().getConfig()
.getString("Triggers." + String.valueOf(triggerName.charAt(0)).toUpperCase()
+ CoreUtilities.toLowerCase(triggerName.substring(1)) + ".Cooldown", "5s")).getSeconds();
}
/*
# This set of nodes defines ranges for different types of
# interact-script triggers. Not all triggers use a range,
# as it may not be applicable to the trigger.
*/
public static double triggerDefaultRange(String triggerName) {
return DenizenAPI.getCurrentInstance().getConfig()
.getDouble("Triggers." + String.valueOf(triggerName.charAt(0)).toUpperCase()
+ CoreUtilities.toLowerCase(triggerName.substring(1)) + ".Range", -1);
}
/*
# This set of nodes defines cooldown-types for different types of
# interact-script triggers.
*/
public static String triggerDefaultCooldownType(String triggerName) {
return DenizenAPI.getCurrentInstance().getConfig()
.getString("Triggers." + String.valueOf(triggerName.charAt(0)).toUpperCase()
+ CoreUtilities.toLowerCase(triggerName.substring(1)) + ".Cooldown Type", "Player");
}
/*
# If the damage trigger is disabled on an NPC, and the NPC is not
# vulnerable, both the right and left clicks can be used to activate
# the click trigger. Default setting in versions 0.8+ is 'false',
# but it's worth noting that in previous versions this was by
# default 'true'.
#
# Select true if you would like invulnerable NPCs to use both right
# and left clicks to activate the click trigger.
*/
public static boolean clickTriggerAllowsLeftClick() { // TODO: Remove?
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Triggers.Click.Allows left click", false);
}
/*
# Default engage timeout. When NPCs are set to ENGAGE, this is
# the default timeout that they will auto-DISENGAGE if not otherwise
# specified. (Default, 150 seconds)
*/
public static String engageTimeoutInSeconds() {
return DenizenAPI.getCurrentInstance().getConfig()
.getString("Commands.Engage.Timeout", "150s");
}
public static int whileMaxLoops() {
return DenizenAPI.getCurrentInstance().getConfig()
.getInt("Commands.While.Max loops", 10000);
}
public static boolean allowWebget() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Commands.Webget.Allow", false);
}
public static boolean allowStupids() {
return allowStupid1() && allowStupid2() && allowStupid3();
}
public static boolean allowStupid1() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Commands.General.Allow stupid file abuse you moron dont enable this", false);
}
public static boolean allowStupid2() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Commands.General.are you sure", false);
}
public static boolean allowStupid3() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Commands.General.are you absolutely seriously sure dont enable this", false);
}
public static boolean allowStupidx() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Commands.General.This one dont touch", false);
}
public static boolean allowFilecopy() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Commands.Filecopy.Allow copying files", true);
}
public static boolean allowDelete() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Commands.Delete.Allow file deletion", true);
}
public static boolean allowRunningJava() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Commands.Java.Allow running java", false);
}
public static boolean allowLogging() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Commands.Log.Allow logging", true);
}
public static boolean allowStrangeYAMLSaves() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Commands.Yaml.Allow saving outside folder", false);
}
public static String chatMultipleTargetsFormat() {
return DenizenAPI.getCurrentInstance().getConfig()
.getString("Commands.Chat.Options.Multiple targets format", "%target%, %target%, %target%, and others");
}
public static double chatBystandersRange() {
return DenizenAPI.getCurrentInstance().getConfig()
.getDouble("Commands.Chat.Options.Range for bystanders", 5.0);
}
public static String chatNoTargetFormat() {
return DenizenAPI.getCurrentInstance().getConfig()
.getString("Commands.Chat.Formats.No target", "[<def[talker].name>]: <def[message]>");
}
public static String chatToTargetFormat() {
return DenizenAPI.getCurrentInstance().getConfig()
.getString("Commands.Chat.Formats.To target", "[<def[talker].name>] -> You: <def[message]>");
}
public static String chatWithTargetToBystandersFormat() {
return DenizenAPI.getCurrentInstance().getConfig()
.getString("Commands.Chat.Formats.With target to bystanders", "[<def[talker].name>] -> <def[target].name>: <def[message]>");
}
public static String chatWithTargetsToBystandersFormat() {
return DenizenAPI.getCurrentInstance().getConfig()
.getString("Commands.Chat.Formats.With targets to bystanders", "[<def[talker].name>] -> [<def[targets]>]: <def[message]>");
}
/*
# Whether the Chat Trigger should use an asynchronous Bukkit
# event or not
*/
public static boolean chatAsynchronous() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Triggers.Chat.Use asynchronous event", false);
}
/*
# The formats in which Chat Trigger input from players appears to
# themselves and to players who can overhear them
*/
public static String chatToNpcFormat() {
return DenizenAPI.getCurrentInstance().getConfig()
.getString("Triggers.Chat.Formats.Player to NPC", "You -> <npc.name.nickname>: <text>");
}
public static String chatToNpcOverheardFormat() {
return DenizenAPI.getCurrentInstance().getConfig()
.getString("Triggers.Chat.Formats.Player to NPC overheard", "<player.name> -> <npc.name.nickname>: <text>");
}
/*
# The distance from which a player chatting to an NPC can be overheard
# by other players
*/
public static double chatToNpcOverhearingRange() {
return DenizenAPI.getCurrentInstance().getConfig()
.getDouble("Triggers.Chat.Overhearing range", 4);
}
/*
# Prerequisites for triggering a Chat Trigger
*/
public static boolean chatMustSeeNPC() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Triggers.Chat.Prerequisites.Must be able to see NPC", true);
}
public static boolean chatMustLookAtNPC() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Triggers.Chat.Prerequisites.Must be looking in direction of NPC", true);
}
/*
# Circumstances under which a player's Chat Trigger input should
# appear in the global chat
*/
public static boolean chatGloballyIfFailedChatTriggers() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Triggers.Chat.Appears globally.If triggers failed", false);
}
public static boolean chatGloballyIfNoChatTriggers() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Triggers.Chat.Appears globally.If triggers missing", true);
}
public static boolean chatGloballyIfUninteractable() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Triggers.Chat.Appears globally.If NPC uninteractable", true);
}
/////////////////////
// WORLD SCRIPTS
/////////////////
/*
# Whether the "on player chats" world event should use an
# asynchronous Bukkit event or not
*/
public static boolean worldScriptChatEventAsynchronous() {
return DenizenAPI.getCurrentInstance().getConfig()
.getBoolean("Scripts.World.Events.On player chats.Use asynchronous event", false);
}
/*
# The frequency with which the "on time changes" world script
# event will be checked
*/
public static Duration worldScriptTimeEventFrequency() {
return Duration.valueOf(DenizenAPI.getCurrentInstance().getConfig()
.getString("Scripts.World.Events.On time changes.Frequency of check", "250t"));
}
public static int blockTagsMaxBlocks() {
return DenizenAPI.getCurrentInstance().getConfig()
.getInt("Tags.Block tags.Max blocks", 1000000);
}
public static int pathfindingMaxDistance() {
return DenizenAPI.getCurrentInstance().getConfig()
.getInt("Tags.Path finding.Max distance", 100);
}
public static int chatHistoryMaxMessages() {
return DenizenAPI.getCurrentInstance().getConfig()
.getInt("Tags.Chat history.Max messages", 10);
}
public static int tagTimeout() {
return DenizenAPI.getCurrentInstance().getConfig()
.getInt("Tags.Timeout", 10);
}
}