package pluginbase.config.properties; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import pluginbase.config.field.PropertyVetoException; import pluginbase.messages.Message; public interface Properties { Message CANNOT_SET_PROPERTY = Message.createMessage("properties.cannot_set_property", "$-The property '$v%s$-' may not be set in this way."); Message CANNOT_MODIFY_NON_COLLECTION = Message.createMessage("properties.cannot_modify_non_collection", "$-The property '$v%s$-' cannot be added/removed/cleared."); @NotNull String[] getAllPropertyNames(); @Nullable Object getProperty(@NotNull String name) throws NoSuchFieldException; void setProperty(@NotNull String name, @NotNull String value) throws IllegalAccessException, NoSuchFieldException, PropertyVetoException, IllegalArgumentException; void addProperty(@NotNull String name, @NotNull String value) throws IllegalAccessException, NoSuchFieldException, PropertyVetoException, IllegalArgumentException; void removeProperty(@NotNull String name, @NotNull String value) throws IllegalAccessException, NoSuchFieldException, PropertyVetoException, IllegalArgumentException; void clearProperty(@NotNull String name, @Nullable String value) throws IllegalAccessException, NoSuchFieldException, PropertyVetoException, IllegalArgumentException; @Nullable Object getPropertyUnchecked(@NotNull String name); boolean setPropertyUnchecked(@NotNull String name, @NotNull String value); boolean addPropertyUnchecked(@NotNull String name, @NotNull String value); boolean removePropertyUnchecked(@NotNull String name, @NotNull String value); boolean clearPropertyUnchecked(@NotNull String name, @Nullable String value); }