Skip to content

Commit aeb10b4

Browse files
committed
Fail-proof try-catch in ParsedRule#set
1 parent 36a0491 commit aeb10b4

1 file changed

Lines changed: 33 additions & 25 deletions

File tree

src/main/java/carpet/settings/ParsedRule.java

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -77,34 +77,42 @@ public ParsedRule<T> set(CommandSource source, String value)
7777
{
7878
if (CarpetServer.settingsManager != null && CarpetServer.settingsManager.locked)
7979
return null;
80-
if (type == String.class)
81-
{
82-
return set(source, (T) value, value);
83-
}
84-
else if (type == boolean.class)
85-
{
86-
return set(source, (T) (Object) Boolean.parseBoolean(value), value);
87-
}
88-
else if (type == int.class)
89-
{
90-
return set(source, (T) (Object) Integer.parseInt(value), value);
91-
}
92-
else if (type == float.class)
93-
{
94-
return set(source, (T) (Object) Float.parseFloat(value), value);
95-
}
96-
else if (type == double.class)
97-
{
98-
return set(source, (T) (Object) Double.parseDouble(value), value);
99-
}
100-
else if (type.isEnum())
80+
try
10181
{
102-
String ucValue = value.toUpperCase(Locale.ROOT);
103-
return set(source, (T) (Object) Enum.valueOf((Class<? extends Enum>) type, ucValue), value);
82+
if (type == String.class)
83+
{
84+
return set(source, (T) value, value);
85+
}
86+
else if (type == boolean.class)
87+
{
88+
return set(source, (T) (Object) Boolean.parseBoolean(value), value);
89+
}
90+
else if (type == int.class)
91+
{
92+
return set(source, (T) (Object) Integer.parseInt(value), value);
93+
}
94+
else if (type == float.class)
95+
{
96+
return set(source, (T) (Object) Float.parseFloat(value), value);
97+
}
98+
else if (type == double.class)
99+
{
100+
return set(source, (T) (Object) Double.parseDouble(value), value);
101+
}
102+
else if (type.isEnum())
103+
{
104+
String ucValue = value.toUpperCase(Locale.ROOT);
105+
return set(source, (T) (Object) Enum.valueOf((Class<? extends Enum>) type, ucValue), value);
106+
}
107+
else
108+
{
109+
Messenger.m(source, "r Unknown type " + type.getSimpleName());
110+
return null;
111+
}
104112
}
105-
else
113+
catch (Exception e)
106114
{
107-
Messenger.m(source, "r Unknown type " + type.getSimpleName());
115+
CarpetServer.LOGGER.warn(String.format("Fail to parse rule %s for value %s: %s", this.name, value, e));
108116
return null;
109117
}
110118
}

0 commit comments

Comments
 (0)