blob: e137ff480c906b222f6726be790645cc1c2b5408 (
plain)
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
|
package com.earth2me.essentials.anticheat.config;
import com.earth2me.essentials.anticheat.actions.Action;
import com.earth2me.essentials.anticheat.actions.types.ActionList;
import java.lang.reflect.Field;
import org.bukkit.configuration.MemorySection;
import org.bukkit.configuration.file.YamlConfiguration;
import org.yaml.snakeyaml.DumperOptions;
public class NoCheatConfiguration extends YamlConfiguration
{
private ActionFactory factory;
@Override
public String saveToString()
{
// Some reflection wizardry to avoid having a lot of
// linebreaks in the yml file, and get a "footer" into the file
try
{
Field op;
op = YamlConfiguration.class.getDeclaredField("yamlOptions");
op.setAccessible(true);
DumperOptions options = (DumperOptions)op.get(this);
options.setWidth(200);
}
catch (Exception e)
{
}
String result = super.saveToString();
return result;
}
/**
* Do this after reading new data
*/
public void regenerateActionLists()
{
factory = new ActionFactory(((MemorySection)this.get(ConfPaths.STRINGS)).getValues(false));
}
/**
* A convenience method to get action lists from the config
*
* @param path
* @return
*/
public ActionList getActionList(String path, String permission)
{
String value = this.getString(path);
return factory.createActionList(value, permission);
}
/**
* Savely store ActionLists back into the yml file
*
* @param path
* @param list
*/
public void set(String path, ActionList list)
{
StringBuilder string = new StringBuilder();
for (int treshold : list.getTresholds())
{
if (treshold > 0)
{
string.append(" vl>").append(treshold);
}
for (Action action : list.getActions(treshold))
{
string.append(" ").append(action);
}
}
set(path, string.toString().trim());
}
}
|