From 01127b4512da5bef283f6e231f79ee83fb9d2062 Mon Sep 17 00:00:00 2001 From: FalsePattern <30945458+FalsePattern@users.noreply.github.com> Date: Fri, 6 May 2022 23:53:11 +0200 Subject: [PATCH] annotations --- .../java/com/falsepattern/lib/StableAPI.java | 24 +++++++++++++++++++ .../com/falsepattern/lib/compat/BlockPos.java | 2 ++ .../com/falsepattern/lib/compat/ChunkPos.java | 5 ++++ .../com/falsepattern/lib/compat/Rotation.java | 2 ++ .../com/falsepattern/lib/compat/Vec3i.java | 2 ++ .../com/falsepattern/lib/config/Config.java | 9 +++---- .../lib/config/ConfigurationManager.java | 2 ++ .../lib/dependencies/ComplexVersion.java | 2 ++ .../lib/dependencies/DependencyLoader.java | 2 ++ .../lib/dependencies/SemanticVersion.java | 2 ++ .../lib/dependencies/Version.java | 3 +++ .../falsepattern/lib/text/FormattedText.java | 2 ++ .../falsepattern/lib/util/ResourceUtil.java | 2 ++ 13 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/falsepattern/lib/StableAPI.java diff --git a/src/main/java/com/falsepattern/lib/StableAPI.java b/src/main/java/com/falsepattern/lib/StableAPI.java new file mode 100644 index 0000000..2e72f8d --- /dev/null +++ b/src/main/java/com/falsepattern/lib/StableAPI.java @@ -0,0 +1,24 @@ +package com.falsepattern.lib; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Anything annotated with this annotation will be considered stable, and the class/method/field will not get breaking + * changes without a full deprecation cycle. + * + * If a class or method is NOT annotated with this annotation, it will be considered unstable, and the package/method arguments/etc. + * can freely change between patch releases without notice. + * + * If a class is annotated with this annotation, all currently existing public and protected members in the class will + * be considered stable. + * + * Private members will never be considered stable, and can be removed without notice. + */ +@Documented +@Retention(RetentionPolicy.CLASS) +@StableAPI(since = "0.6.0") +public @interface StableAPI { + String since(); +} diff --git a/src/main/java/com/falsepattern/lib/compat/BlockPos.java b/src/main/java/com/falsepattern/lib/compat/BlockPos.java index ab999b9..65eec53 100644 --- a/src/main/java/com/falsepattern/lib/compat/BlockPos.java +++ b/src/main/java/com/falsepattern/lib/compat/BlockPos.java @@ -1,5 +1,6 @@ package com.falsepattern.lib.compat; +import com.falsepattern.lib.StableAPI; import com.google.common.collect.AbstractIterator; import com.google.common.collect.Lists; import cpw.mods.fml.relauncher.Side; @@ -16,6 +17,7 @@ import java.util.Iterator; import java.util.List; @Immutable +@StableAPI(since = "0.6.0") public class BlockPos extends Vec3i { /** * An immutable block pos with zero as all coordinates. diff --git a/src/main/java/com/falsepattern/lib/compat/ChunkPos.java b/src/main/java/com/falsepattern/lib/compat/ChunkPos.java index fd5b5b8..58e1d32 100644 --- a/src/main/java/com/falsepattern/lib/compat/ChunkPos.java +++ b/src/main/java/com/falsepattern/lib/compat/ChunkPos.java @@ -1,7 +1,12 @@ package com.falsepattern.lib.compat; +import com.falsepattern.lib.StableAPI; import net.minecraft.entity.Entity; +import javax.annotation.concurrent.Immutable; + +@Immutable +@StableAPI(since = "0.6.0") public class ChunkPos { /** * The X position of this Chunk Coordinate Pair diff --git a/src/main/java/com/falsepattern/lib/compat/Rotation.java b/src/main/java/com/falsepattern/lib/compat/Rotation.java index c2e9bbc..e9a4e66 100644 --- a/src/main/java/com/falsepattern/lib/compat/Rotation.java +++ b/src/main/java/com/falsepattern/lib/compat/Rotation.java @@ -1,7 +1,9 @@ package com.falsepattern.lib.compat; +import com.falsepattern.lib.StableAPI; import net.minecraft.util.EnumFacing; +@StableAPI(since = "0.6.0") public enum Rotation { NONE("rotate_0"), CLOCKWISE_90("rotate_90"), diff --git a/src/main/java/com/falsepattern/lib/compat/Vec3i.java b/src/main/java/com/falsepattern/lib/compat/Vec3i.java index 1bcc224..397fece 100644 --- a/src/main/java/com/falsepattern/lib/compat/Vec3i.java +++ b/src/main/java/com/falsepattern/lib/compat/Vec3i.java @@ -1,11 +1,13 @@ package com.falsepattern.lib.compat; +import com.falsepattern.lib.StableAPI; import net.minecraft.util.MathHelper; import javax.annotation.concurrent.Immutable; import java.util.Objects; @Immutable +@StableAPI(since = "0.6.0") public class Vec3i implements Comparable { /** * An immutable vector with zero as all coordinates. diff --git a/src/main/java/com/falsepattern/lib/config/Config.java b/src/main/java/com/falsepattern/lib/config/Config.java index f6ddf25..1581cd1 100644 --- a/src/main/java/com/falsepattern/lib/config/Config.java +++ b/src/main/java/com/falsepattern/lib/config/Config.java @@ -1,12 +1,13 @@ package com.falsepattern.lib.config; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; +import com.falsepattern.lib.StableAPI; +import java.lang.annotation.*; + +@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) +@StableAPI(since = "0.6.0") public @interface Config { /** * The mod id that this configuration is associated with. diff --git a/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java b/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java index a747e81..772bcd5 100644 --- a/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java +++ b/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java @@ -1,5 +1,6 @@ package com.falsepattern.lib.config; +import com.falsepattern.lib.StableAPI; import cpw.mods.fml.client.event.ConfigChangedEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import lombok.AccessLevel; @@ -18,6 +19,7 @@ import java.util.*; * Class for controlling the loading of configuration files. */ @NoArgsConstructor(access = AccessLevel.PRIVATE) +@StableAPI(since = "0.6.0") public class ConfigurationManager { private static final Map>> configs = new HashMap<>(); diff --git a/src/main/java/com/falsepattern/lib/dependencies/ComplexVersion.java b/src/main/java/com/falsepattern/lib/dependencies/ComplexVersion.java index 66504c5..ac7aa78 100644 --- a/src/main/java/com/falsepattern/lib/dependencies/ComplexVersion.java +++ b/src/main/java/com/falsepattern/lib/dependencies/ComplexVersion.java @@ -1,11 +1,13 @@ package com.falsepattern.lib.dependencies; +import com.falsepattern.lib.StableAPI; import lombok.NonNull; import lombok.val; import java.util.Arrays; import java.util.stream.Collectors; +@StableAPI(since = "0.6.0") public class ComplexVersion extends Version { final Version[] versions; public ComplexVersion(@NonNull Version mainVersion, Version... subVersions) { diff --git a/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java b/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java index de780ad..1f99bc4 100644 --- a/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java +++ b/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java @@ -1,5 +1,6 @@ package com.falsepattern.lib.dependencies; +import com.falsepattern.lib.StableAPI; import com.falsepattern.lib.internal.CoreLoadingPlugin; import com.falsepattern.lib.internal.FalsePatternLib; import lombok.NonNull; @@ -13,6 +14,7 @@ import java.net.URL; import java.util.*; +@StableAPI(since = "0.6.0") public class DependencyLoader { private static final Map loadedLibraries = new HashMap<>(); diff --git a/src/main/java/com/falsepattern/lib/dependencies/SemanticVersion.java b/src/main/java/com/falsepattern/lib/dependencies/SemanticVersion.java index 1ebaffe..74aaa5b 100644 --- a/src/main/java/com/falsepattern/lib/dependencies/SemanticVersion.java +++ b/src/main/java/com/falsepattern/lib/dependencies/SemanticVersion.java @@ -1,5 +1,6 @@ package com.falsepattern.lib.dependencies; +import com.falsepattern.lib.StableAPI; import lombok.Builder; import lombok.Getter; import lombok.NonNull; @@ -7,6 +8,7 @@ import lombok.val; import java.util.Objects; +@StableAPI(since = "0.6.0") public class SemanticVersion extends Version { @Getter private final int majorVersion; diff --git a/src/main/java/com/falsepattern/lib/dependencies/Version.java b/src/main/java/com/falsepattern/lib/dependencies/Version.java index 1437121..9ae94b2 100644 --- a/src/main/java/com/falsepattern/lib/dependencies/Version.java +++ b/src/main/java/com/falsepattern/lib/dependencies/Version.java @@ -1,5 +1,8 @@ package com.falsepattern.lib.dependencies; +import com.falsepattern.lib.StableAPI; + +@StableAPI(since = "0.6.0") public abstract class Version implements Comparable { protected Version(){} diff --git a/src/main/java/com/falsepattern/lib/text/FormattedText.java b/src/main/java/com/falsepattern/lib/text/FormattedText.java index 3e00d43..ab42159 100644 --- a/src/main/java/com/falsepattern/lib/text/FormattedText.java +++ b/src/main/java/com/falsepattern/lib/text/FormattedText.java @@ -1,5 +1,6 @@ package com.falsepattern.lib.text; +import com.falsepattern.lib.StableAPI; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import lombok.NonNull; @@ -23,6 +24,7 @@ import java.util.*; /** * Universal escape sequence-based text rendering and chat messages. */ +@StableAPI(since = "0.6.0") public final class FormattedText { private static final Map reverseMap = new HashMap<>(); private static final Map colorMap = new HashMap<>(); diff --git a/src/main/java/com/falsepattern/lib/util/ResourceUtil.java b/src/main/java/com/falsepattern/lib/util/ResourceUtil.java index 587bfe8..daadca4 100644 --- a/src/main/java/com/falsepattern/lib/util/ResourceUtil.java +++ b/src/main/java/com/falsepattern/lib/util/ResourceUtil.java @@ -1,5 +1,6 @@ package com.falsepattern.lib.util; +import com.falsepattern.lib.StableAPI; import lombok.val; import java.io.ByteArrayOutputStream; @@ -13,6 +14,7 @@ import java.nio.charset.StandardCharsets; /** * A utility class for reading resources in many ways. */ +@StableAPI(since = "0.6.0") public class ResourceUtil { /**