diff --git a/buildSrc/src/main/kotlin/cc-tweaked.java-convention.gradle.kts b/buildSrc/src/main/kotlin/cc-tweaked.java-convention.gradle.kts index bdfa23a21..3138d0e76 100644 --- a/buildSrc/src/main/kotlin/cc-tweaked.java-convention.gradle.kts +++ b/buildSrc/src/main/kotlin/cc-tweaked.java-convention.gradle.kts @@ -84,7 +84,6 @@ sourceSets.all { options.errorprone { check("InvalidBlockTag", CheckSeverity.OFF) // Broken by @cc.xyz - check("InvalidParam", CheckSeverity.OFF) // Broken by records. check("InlineMeSuggester", CheckSeverity.OFF) // Minecraft uses @Deprecated liberally // Too many false positives right now. Maybe we need an indirection for it later on. check("ReferenceEquality", CheckSeverity.OFF) diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index c8a0ae25e..8321fa26c 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -92,7 +92,10 @@ SPDX-License-Identifier: MPL-2.0 - + + + + @@ -143,7 +146,10 @@ SPDX-License-Identifier: MPL-2.0 - + + + + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 40b2a7b5b..c64a3af7a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -29,9 +29,9 @@ checkerFramework = "3.42.0" cobalt = { strictly = "0.9.5" } commonsCli = "1.6.0" jetbrainsAnnotations = "24.1.0" -jsr305 = "3.0.2" +jspecify = "1.0.0" jzlib = "1.1.3" -kotlin = "2.1.0" +kotlin = "2.1.10" kotlin-coroutines = "1.10.1" nightConfig = "3.8.1" @@ -58,9 +58,9 @@ jmh = "1.37" # Build tools cctJavadoc = "1.8.3" -checkstyle = "10.14.1" -errorProne-core = "2.27.0" -errorProne-plugin = "3.1.0" +checkstyle = "10.21.2" +errorProne-core = "2.36.0" +errorProne-plugin = "4.1.0" fabric-loom = "1.9.2" githubRelease = "2.5.2" gradleVersions = "0.50.0" @@ -69,7 +69,7 @@ illuaminate = "0.1.0-74-gf1551d5" lwjgl = "3.3.3" minotaur = "2.8.7" modDevGradle = "2.0.74" -nullAway = "0.10.25" +nullAway = "0.12.3" shadow = "8.3.1" spotless = "6.23.3" taskTree = "2.1.1" @@ -89,7 +89,7 @@ fastutil = { module = "it.unimi.dsi:fastutil", version.ref = "fastutil" } forgeSpi = { module = "net.minecraftforge:forgespi", version.ref = "forgeSpi" } guava = { module = "com.google.guava:guava", version.ref = "guava" } jetbrainsAnnotations = { module = "org.jetbrains:annotations", version.ref = "jetbrainsAnnotations" } -jsr305 = { module = "com.google.code.findbugs:jsr305", version.ref = "jsr305" } +jspecify = { module = "org.jspecify:jspecify", version.ref = "jspecify" } jzlib = { module = "com.jcraft:jzlib", version.ref = "jzlib" } kotlin-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlin-coroutines" } kotlin-platform = { module = "org.jetbrains.kotlin:kotlin-bom", version.ref = "kotlin" } @@ -178,7 +178,7 @@ taskTree = { id = "com.dorongold.task-tree", version.ref = "taskTree" } versionCatalogUpdate = { id = "nl.littlerobots.version-catalog-update", version.ref = "versionCatalogUpdate" } [bundles] -annotations = ["jsr305", "checkerFramework", "jetbrainsAnnotations"] +annotations = ["checkerFramework", "jetbrainsAnnotations", "jspecify"] kotlin = ["kotlin-stdlib", "kotlin-coroutines"] # Minecraft diff --git a/projects/common-api/src/client/java/dan200/computercraft/api/client/turtle/TurtleUpgradeModeller.java b/projects/common-api/src/client/java/dan200/computercraft/api/client/turtle/TurtleUpgradeModeller.java index a453723a7..31c9b78fa 100644 --- a/projects/common-api/src/client/java/dan200/computercraft/api/client/turtle/TurtleUpgradeModeller.java +++ b/projects/common-api/src/client/java/dan200/computercraft/api/client/turtle/TurtleUpgradeModeller.java @@ -12,8 +12,8 @@ import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Collection; import java.util.List; diff --git a/projects/common-api/src/client/java/dan200/computercraft/api/client/turtle/TurtleUpgradeModellers.java b/projects/common-api/src/client/java/dan200/computercraft/api/client/turtle/TurtleUpgradeModellers.java index 1af04e61b..343a996f7 100644 --- a/projects/common-api/src/client/java/dan200/computercraft/api/client/turtle/TurtleUpgradeModellers.java +++ b/projects/common-api/src/client/java/dan200/computercraft/api/client/turtle/TurtleUpgradeModellers.java @@ -14,8 +14,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; import org.joml.Matrix4f; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; final class TurtleUpgradeModellers { private static final Transformation leftTransform = getMatrixFor(-0.4065f); diff --git a/projects/common-api/src/client/java/dan200/computercraft/impl/client/ClientPlatformHelper.java b/projects/common-api/src/client/java/dan200/computercraft/impl/client/ClientPlatformHelper.java index 2f79ed05d..bb76e2cc2 100644 --- a/projects/common-api/src/client/java/dan200/computercraft/impl/client/ClientPlatformHelper.java +++ b/projects/common-api/src/client/java/dan200/computercraft/impl/client/ClientPlatformHelper.java @@ -11,8 +11,7 @@ import net.minecraft.client.resources.model.ModelManager; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.ApiStatus; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; @ApiStatus.Internal public interface ClientPlatformHelper { diff --git a/projects/common-api/src/client/java/dan200/computercraft/impl/client/ComputerCraftAPIClientService.java b/projects/common-api/src/client/java/dan200/computercraft/impl/client/ComputerCraftAPIClientService.java index a56e0a044..fd6458e7c 100644 --- a/projects/common-api/src/client/java/dan200/computercraft/impl/client/ComputerCraftAPIClientService.java +++ b/projects/common-api/src/client/java/dan200/computercraft/impl/client/ComputerCraftAPIClientService.java @@ -10,8 +10,7 @@ import dan200.computercraft.api.turtle.ITurtleUpgrade; import dan200.computercraft.api.turtle.TurtleUpgradeSerialiser; import dan200.computercraft.impl.Services; import org.jetbrains.annotations.ApiStatus; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Backing interface for {@link ComputerCraftAPIClient} diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/ComputerCraftAPI.java b/projects/common-api/src/main/java/dan200/computercraft/api/ComputerCraftAPI.java index 1a75ae954..806a3d597 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/ComputerCraftAPI.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/ComputerCraftAPI.java @@ -26,8 +26,7 @@ import net.minecraft.core.Direction; import net.minecraft.server.MinecraftServer; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * The static entry point to the ComputerCraft API. diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/detail/BasicItemDetailProvider.java b/projects/common-api/src/main/java/dan200/computercraft/api/detail/BasicItemDetailProvider.java index c709b79f6..56fe0557c 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/detail/BasicItemDetailProvider.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/detail/BasicItemDetailProvider.java @@ -6,8 +6,8 @@ package dan200.computercraft.api.detail; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/detail/BlockReference.java b/projects/common-api/src/main/java/dan200/computercraft/api/detail/BlockReference.java index fc6f25bf6..b58f2da7a 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/detail/BlockReference.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/detail/BlockReference.java @@ -8,8 +8,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * A reference to a block in the world, used by block detail providers. diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/lua/IComputerSystem.java b/projects/common-api/src/main/java/dan200/computercraft/api/lua/IComputerSystem.java index 8d6de36e6..610824eec 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/lua/IComputerSystem.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/lua/IComputerSystem.java @@ -9,8 +9,7 @@ import dan200.computercraft.api.peripheral.IComputerAccess; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import org.jetbrains.annotations.ApiStatus; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * An interface passed to {@link ILuaAPIFactory} in order to provide additional information diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/lua/ILuaAPIFactory.java b/projects/common-api/src/main/java/dan200/computercraft/api/lua/ILuaAPIFactory.java index cb0f35500..b8abdfedc 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/lua/ILuaAPIFactory.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/lua/ILuaAPIFactory.java @@ -5,8 +5,7 @@ package dan200.computercraft.api.lua; import dan200.computercraft.api.ComputerCraftAPI; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Construct an {@link ILuaAPI} for a computer. diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/media/IMedia.java b/projects/common-api/src/main/java/dan200/computercraft/api/media/IMedia.java index 045698aaa..a3995e42a 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/media/IMedia.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/media/IMedia.java @@ -12,8 +12,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Represents an item that can be placed in a disk drive and used by a Computer. diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/media/MediaProvider.java b/projects/common-api/src/main/java/dan200/computercraft/api/media/MediaProvider.java index 6ffd306dd..02d7a3bb4 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/media/MediaProvider.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/media/MediaProvider.java @@ -5,8 +5,7 @@ package dan200.computercraft.api.media; import net.minecraft.world.item.ItemStack; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * This interface is used to provide {@link IMedia} implementations for {@link ItemStack}. diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/media/PrintoutContents.java b/projects/common-api/src/main/java/dan200/computercraft/api/media/PrintoutContents.java index 2825d796c..8284cdd62 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/media/PrintoutContents.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/media/PrintoutContents.java @@ -6,8 +6,8 @@ package dan200.computercraft.api.media; import dan200.computercraft.impl.ComputerCraftAPIService; import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.stream.Stream; /** diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/pocket/IPocketAccess.java b/projects/common-api/src/main/java/dan200/computercraft/api/pocket/IPocketAccess.java index e0d539a1d..d61ce5d35 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/pocket/IPocketAccess.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/pocket/IPocketAccess.java @@ -14,8 +14,8 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.ApiStatus; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Map; /** diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/pocket/IPocketUpgrade.java b/projects/common-api/src/main/java/dan200/computercraft/api/pocket/IPocketUpgrade.java index 2ee590466..af982fb99 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/pocket/IPocketUpgrade.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/pocket/IPocketUpgrade.java @@ -7,8 +7,7 @@ package dan200.computercraft.api.pocket; import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.api.upgrades.UpgradeBase; import net.minecraft.world.level.Level; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * A peripheral which can be equipped to the back side of a pocket computer. diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/turtle/ITurtleAccess.java b/projects/common-api/src/main/java/dan200/computercraft/api/turtle/ITurtleAccess.java index 9565a6e2d..97e1a2d59 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/turtle/ITurtleAccess.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/turtle/ITurtleAccess.java @@ -17,8 +17,7 @@ import net.minecraft.world.Container; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import org.jetbrains.annotations.ApiStatus; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * The interface passed to turtle by turtles, providing methods that they can call. diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/turtle/ITurtleUpgrade.java b/projects/common-api/src/main/java/dan200/computercraft/api/turtle/ITurtleUpgrade.java index eb776306f..6e6ffaf26 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/turtle/ITurtleUpgrade.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/turtle/ITurtleUpgrade.java @@ -9,8 +9,8 @@ import dan200.computercraft.api.upgrades.UpgradeBase; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.Items; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.function.BiFunction; /** diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/turtle/TurtleCommandResult.java b/projects/common-api/src/main/java/dan200/computercraft/api/turtle/TurtleCommandResult.java index f048782b9..348e13b5b 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/turtle/TurtleCommandResult.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/turtle/TurtleCommandResult.java @@ -5,8 +5,7 @@ package dan200.computercraft.api.turtle; import net.minecraft.core.Direction; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Used to indicate the result of executing a turtle command. @@ -60,9 +59,9 @@ public final class TurtleCommandResult { private final boolean success; private final @Nullable String errorMessage; - private final @Nullable Object[] results; + private final @Nullable Object @Nullable [] results; - private TurtleCommandResult(boolean success, @Nullable String errorMessage, @Nullable Object[] results) { + private TurtleCommandResult(boolean success, @Nullable String errorMessage, @Nullable Object @Nullable [] results) { this.success = success; this.errorMessage = errorMessage; this.results = results; @@ -92,8 +91,7 @@ public final class TurtleCommandResult { * * @return The command's result, or {@code null} if it was a failure. */ - @Nullable - public Object[] getResults() { + public @Nullable Object @Nullable [] getResults() { return results; } } diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/turtle/TurtleUpgradeDataProvider.java b/projects/common-api/src/main/java/dan200/computercraft/api/turtle/TurtleUpgradeDataProvider.java index 84753db98..2193d09d1 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/turtle/TurtleUpgradeDataProvider.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/turtle/TurtleUpgradeDataProvider.java @@ -18,8 +18,8 @@ import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.function.Consumer; /** diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/upgrades/UpgradeData.java b/projects/common-api/src/main/java/dan200/computercraft/api/upgrades/UpgradeData.java index 27dd914f2..f4038fba5 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/upgrades/UpgradeData.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/upgrades/UpgradeData.java @@ -9,8 +9,7 @@ import dan200.computercraft.api.turtle.ITurtleUpgrade; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Contract; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * An upgrade (i.e. a {@link ITurtleUpgrade}) and its current upgrade data. diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/upgrades/UpgradeDataProvider.java b/projects/common-api/src/main/java/dan200/computercraft/api/upgrades/UpgradeDataProvider.java index 2d691ebeb..a62f21f9f 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/upgrades/UpgradeDataProvider.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/upgrades/UpgradeDataProvider.java @@ -19,8 +19,8 @@ import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; diff --git a/projects/common-api/src/main/java/dan200/computercraft/impl/ComputerCraftAPIService.java b/projects/common-api/src/main/java/dan200/computercraft/impl/ComputerCraftAPIService.java index 6dbf08f0c..f4263e6af 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/impl/ComputerCraftAPIService.java +++ b/projects/common-api/src/main/java/dan200/computercraft/impl/ComputerCraftAPIService.java @@ -28,8 +28,7 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import org.jetbrains.annotations.ApiStatus; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Backing interface for {@link ComputerCraftAPI} diff --git a/projects/common-api/src/main/java/dan200/computercraft/impl/PlatformHelper.java b/projects/common-api/src/main/java/dan200/computercraft/impl/PlatformHelper.java index a7ab333d4..7c951a786 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/impl/PlatformHelper.java +++ b/projects/common-api/src/main/java/dan200/computercraft/impl/PlatformHelper.java @@ -12,8 +12,7 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.ApiStatus; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Abstraction layer for Forge and Fabric. See implementations for more details. diff --git a/projects/common-api/src/main/java/dan200/computercraft/impl/ServiceException.java b/projects/common-api/src/main/java/dan200/computercraft/impl/ServiceException.java index 81f45a6ee..766eddbb8 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/impl/ServiceException.java +++ b/projects/common-api/src/main/java/dan200/computercraft/impl/ServiceException.java @@ -5,8 +5,8 @@ package dan200.computercraft.impl; import org.jetbrains.annotations.ApiStatus; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.Serial; /** diff --git a/projects/common-api/src/main/java/dan200/computercraft/impl/Services.java b/projects/common-api/src/main/java/dan200/computercraft/impl/Services.java index 10f9c1a1d..45c1d8a0f 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/impl/Services.java +++ b/projects/common-api/src/main/java/dan200/computercraft/impl/Services.java @@ -5,8 +5,8 @@ package dan200.computercraft.impl; import org.jetbrains.annotations.ApiStatus; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ServiceLoader; import java.util.stream.Collectors; diff --git a/projects/common/src/client/java/dan200/computercraft/client/ClientHooks.java b/projects/common/src/client/java/dan200/computercraft/client/ClientHooks.java index 3ecd0bdc6..647057d26 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/ClientHooks.java +++ b/projects/common/src/client/java/dan200/computercraft/client/ClientHooks.java @@ -38,8 +38,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.function.Consumer; /** diff --git a/projects/common/src/client/java/dan200/computercraft/client/ClientRegistry.java b/projects/common/src/client/java/dan200/computercraft/client/ClientRegistry.java index b1560568c..9fe909ee9 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/ClientRegistry.java +++ b/projects/common/src/client/java/dan200/computercraft/client/ClientRegistry.java @@ -46,8 +46,8 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ItemLike; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.util.function.BiConsumer; diff --git a/projects/common/src/client/java/dan200/computercraft/client/ClientTableFormatter.java b/projects/common/src/client/java/dan200/computercraft/client/ClientTableFormatter.java index fe6263b51..e62037e0a 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/ClientTableFormatter.java +++ b/projects/common/src/client/java/dan200/computercraft/client/ClientTableFormatter.java @@ -15,8 +15,8 @@ import net.minecraft.client.gui.components.ChatComponent; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import org.apache.commons.lang3.StringUtils; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Objects; /** diff --git a/projects/common/src/client/java/dan200/computercraft/client/gui/AbstractComputerScreen.java b/projects/common/src/client/java/dan200/computercraft/client/gui/AbstractComputerScreen.java index c25c0d059..d58e19d2a 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/gui/AbstractComputerScreen.java +++ b/projects/common/src/client/java/dan200/computercraft/client/gui/AbstractComputerScreen.java @@ -26,11 +26,11 @@ import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.Nullable; import org.lwjgl.glfw.GLFW; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.file.Files; diff --git a/projects/common/src/client/java/dan200/computercraft/client/gui/GuiSprites.java b/projects/common/src/client/java/dan200/computercraft/client/gui/GuiSprites.java index 8e2627a74..bf5c57867 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/gui/GuiSprites.java +++ b/projects/common/src/client/java/dan200/computercraft/client/gui/GuiSprites.java @@ -11,8 +11,8 @@ import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.resources.TextureAtlasHolder; import net.minecraft.resources.ResourceLocation; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Objects; import java.util.stream.Stream; diff --git a/projects/common/src/client/java/dan200/computercraft/client/gui/NoTermComputerScreen.java b/projects/common/src/client/java/dan200/computercraft/client/gui/NoTermComputerScreen.java index 71a3609ad..6493d3c74 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/gui/NoTermComputerScreen.java +++ b/projects/common/src/client/java/dan200/computercraft/client/gui/NoTermComputerScreen.java @@ -15,9 +15,9 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.MenuAccess; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; +import org.jspecify.annotations.Nullable; import org.lwjgl.glfw.GLFW; -import javax.annotation.Nullable; import java.util.Objects; import static dan200.computercraft.core.util.Nullability.assertNonNull; diff --git a/projects/common/src/client/java/dan200/computercraft/client/gui/OptionScreen.java b/projects/common/src/client/java/dan200/computercraft/client/gui/OptionScreen.java index 1dae0bcea..057f149d5 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/gui/OptionScreen.java +++ b/projects/common/src/client/java/dan200/computercraft/client/gui/OptionScreen.java @@ -12,8 +12,8 @@ import net.minecraft.client.gui.components.MultiLineLabel; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; import static dan200.computercraft.core.util.Nullability.assertNonNull; diff --git a/projects/common/src/client/java/dan200/computercraft/client/gui/PrintoutScreen.java b/projects/common/src/client/java/dan200/computercraft/client/gui/PrintoutScreen.java index 626ee07d0..701a2dbf0 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/gui/PrintoutScreen.java +++ b/projects/common/src/client/java/dan200/computercraft/client/gui/PrintoutScreen.java @@ -149,6 +149,7 @@ public final class PrintoutScreen extends AbstractContainerScreen // Skip rendering labels. } + @SuppressWarnings("ArrayRecordComponent") record PrintoutInfo(int pages, boolean book, TextBuffer[] text, TextBuffer[] colour) { public static final PrintoutInfo DEFAULT; diff --git a/projects/common/src/client/java/dan200/computercraft/client/gui/widgets/DynamicImageButton.java b/projects/common/src/client/java/dan200/computercraft/client/gui/widgets/DynamicImageButton.java index 2434e277d..ab85aa492 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/gui/widgets/DynamicImageButton.java +++ b/projects/common/src/client/java/dan200/computercraft/client/gui/widgets/DynamicImageButton.java @@ -12,8 +12,8 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.Tooltip; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.network.chat.Component; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.function.Supplier; /** diff --git a/projects/common/src/client/java/dan200/computercraft/client/model/turtle/ModelTransformer.java b/projects/common/src/client/java/dan200/computercraft/client/model/turtle/ModelTransformer.java index c512f0c0d..6132d0242 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/model/turtle/ModelTransformer.java +++ b/projects/common/src/client/java/dan200/computercraft/client/model/turtle/ModelTransformer.java @@ -13,8 +13,8 @@ import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; import org.joml.Matrix4f; import org.joml.Vector4f; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; diff --git a/projects/common/src/client/java/dan200/computercraft/client/model/turtle/TurtleModelParts.java b/projects/common/src/client/java/dan200/computercraft/client/model/turtle/TurtleModelParts.java index fec6d4d7d..d898020e2 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/model/turtle/TurtleModelParts.java +++ b/projects/common/src/client/java/dan200/computercraft/client/model/turtle/TurtleModelParts.java @@ -20,8 +20,8 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; import java.util.Map; diff --git a/projects/common/src/client/java/dan200/computercraft/client/platform/ClientNetworkContextImpl.java b/projects/common/src/client/java/dan200/computercraft/client/platform/ClientNetworkContextImpl.java index ca3d9f9e7..3ff0a3692 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/platform/ClientNetworkContextImpl.java +++ b/projects/common/src/client/java/dan200/computercraft/client/platform/ClientNetworkContextImpl.java @@ -26,8 +26,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.UUID; /** diff --git a/projects/common/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelper.java b/projects/common/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelper.java index 4200f9545..43d1681d0 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelper.java +++ b/projects/common/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelper.java @@ -13,8 +13,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.ServerGamePacketListener; import net.minecraft.sounds.SoundEvent; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public interface ClientPlatformHelper extends dan200.computercraft.impl.client.ClientPlatformHelper { static ClientPlatformHelper get() { @@ -39,7 +38,7 @@ public interface ClientPlatformHelper extends dan200.computercraft.impl.client.C * @param overlayLight The current overlay light. * @param tints Block colour tints to apply to the model. */ - void renderBakedModel(PoseStack transform, MultiBufferSource buffers, BakedModel model, int lightmapCoord, int overlayLight, @Nullable int[] tints); + void renderBakedModel(PoseStack transform, MultiBufferSource buffers, BakedModel model, int lightmapCoord, int overlayLight, int @Nullable [] tints); /** * Play a record at a particular position. diff --git a/projects/common/src/client/java/dan200/computercraft/client/pocket/ClientPocketComputers.java b/projects/common/src/client/java/dan200/computercraft/client/pocket/ClientPocketComputers.java index 2d4eef3c7..252f3c5e9 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/pocket/ClientPocketComputers.java +++ b/projects/common/src/client/java/dan200/computercraft/client/pocket/ClientPocketComputers.java @@ -10,8 +10,8 @@ import dan200.computercraft.shared.computer.terminal.TerminalState; import dan200.computercraft.shared.network.client.PocketComputerDataMessage; import dan200.computercraft.shared.pocket.items.PocketComputerItem; import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; import java.util.UUID; diff --git a/projects/common/src/client/java/dan200/computercraft/client/pocket/PocketComputerData.java b/projects/common/src/client/java/dan200/computercraft/client/pocket/PocketComputerData.java index d2e5125ef..c12913c78 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/pocket/PocketComputerData.java +++ b/projects/common/src/client/java/dan200/computercraft/client/pocket/PocketComputerData.java @@ -8,8 +8,7 @@ import dan200.computercraft.shared.computer.core.ComputerState; import dan200.computercraft.shared.computer.terminal.NetworkedTerminal; import dan200.computercraft.shared.computer.terminal.TerminalState; import dan200.computercraft.shared.pocket.core.PocketServerComputer; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Clientside data about a pocket computer. diff --git a/projects/common/src/client/java/dan200/computercraft/client/render/ModelRenderer.java b/projects/common/src/client/java/dan200/computercraft/client/render/ModelRenderer.java index f054f3f40..9db294f0c 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/render/ModelRenderer.java +++ b/projects/common/src/client/java/dan200/computercraft/client/render/ModelRenderer.java @@ -14,8 +14,8 @@ import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.world.item.ItemStack; import org.joml.Vector4f; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; /** @@ -39,7 +39,7 @@ public final class ModelRenderer { * @param overlayLight The current overlay light. * @param tints Block colour tints to apply to the model. */ - public static void renderQuads(PoseStack transform, VertexConsumer buffer, List quads, int lightmapCoord, int overlayLight, @Nullable int[] tints) { + public static void renderQuads(PoseStack transform, VertexConsumer buffer, List quads, int lightmapCoord, int overlayLight, int @Nullable [] tints) { var matrix = transform.last(); var inverted = matrix.pose().determinant() < 0; diff --git a/projects/common/src/client/java/dan200/computercraft/client/render/RenderTypes.java b/projects/common/src/client/java/dan200/computercraft/client/render/RenderTypes.java index 3a701e4ed..327038690 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/render/RenderTypes.java +++ b/projects/common/src/client/java/dan200/computercraft/client/render/RenderTypes.java @@ -16,8 +16,8 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.ShaderInstance; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceProvider; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.IOException; import java.util.Objects; import java.util.function.BiConsumer; diff --git a/projects/common/src/client/java/dan200/computercraft/client/render/TurtleBlockEntityRenderer.java b/projects/common/src/client/java/dan200/computercraft/client/render/TurtleBlockEntityRenderer.java index caf56621e..48a1e9895 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/render/TurtleBlockEntityRenderer.java +++ b/projects/common/src/client/java/dan200/computercraft/client/render/TurtleBlockEntityRenderer.java @@ -23,8 +23,7 @@ import net.minecraft.client.resources.model.BakedModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class TurtleBlockEntityRenderer implements BlockEntityRenderer { private static final ResourceLocation COLOUR_TURTLE_MODEL = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_colour"); @@ -127,7 +126,7 @@ public class TurtleBlockEntityRenderer implements BlockEntityRenderer diff --git a/projects/common/src/main/java/dan200/computercraft/impl/network/wired/NodeSet.java b/projects/common/src/main/java/dan200/computercraft/impl/network/wired/NodeSet.java index 9d3f0808e..87994d1e8 100644 --- a/projects/common/src/main/java/dan200/computercraft/impl/network/wired/NodeSet.java +++ b/projects/common/src/main/java/dan200/computercraft/impl/network/wired/NodeSet.java @@ -5,8 +5,8 @@ package dan200.computercraft.impl.network.wired; import dan200.computercraft.api.network.wired.WiredNode; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Objects; /** diff --git a/projects/common/src/main/java/dan200/computercraft/impl/network/wired/WiredNodeImpl.java b/projects/common/src/main/java/dan200/computercraft/impl/network/wired/WiredNodeImpl.java index ec9d6015e..c79b82ead 100644 --- a/projects/common/src/main/java/dan200/computercraft/impl/network/wired/WiredNodeImpl.java +++ b/projects/common/src/main/java/dan200/computercraft/impl/network/wired/WiredNodeImpl.java @@ -11,8 +11,8 @@ import dan200.computercraft.api.network.wired.WiredNetwork; import dan200.computercraft.api.network.wired.WiredNode; import dan200.computercraft.api.network.wired.WiredSender; import dan200.computercraft.api.peripheral.IPeripheral; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.HashSet; import java.util.Map; import java.util.Objects; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/CommonHooks.java b/projects/common/src/main/java/dan200/computercraft/shared/CommonHooks.java index b3c01c791..c35d17e50 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/CommonHooks.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/CommonHooks.java @@ -30,8 +30,8 @@ import net.minecraft.world.level.storage.loot.BuiltInLootTables; import net.minecraft.world.level.storage.loot.LootPool; import net.minecraft.world.level.storage.loot.entries.LootTableReference; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Set; import java.util.function.BiConsumer; @@ -101,7 +101,7 @@ public final class CommonHooks { BuiltInLootTables.VILLAGE_CARTOGRAPHER ); - public static @Nullable LootPool.Builder getExtraLootPool(ResourceLocation lootTable) { + public static LootPool.@Nullable Builder getExtraLootPool(ResourceLocation lootTable) { if (!lootTable.getNamespace().equals("minecraft") || !TREASURE_DISK_LOOT_TABLES.contains(lootTable)) { return null; } diff --git a/projects/common/src/main/java/dan200/computercraft/shared/command/CommandComputerCraft.java b/projects/common/src/main/java/dan200/computercraft/shared/command/CommandComputerCraft.java index 4889f20f2..4fff85dd4 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/command/CommandComputerCraft.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/command/CommandComputerCraft.java @@ -34,8 +34,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.File; import java.util.*; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/command/arguments/ComputerSelector.java b/projects/common/src/main/java/dan200/computercraft/shared/command/arguments/ComputerSelector.java index 7d1668b76..298aecc7c 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/command/arguments/ComputerSelector.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/command/arguments/ComputerSelector.java @@ -22,8 +22,8 @@ import net.minecraft.network.chat.ComponentContents; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.function.Function; @@ -43,11 +43,11 @@ public record ComputerSelector( @Nullable String label, @Nullable ComputerFamily family, @Nullable AABB bounds, - @Nullable MinMaxBounds.Doubles range + MinMaxBounds.@Nullable Doubles range ) { private static final ComputerSelector all = new ComputerSelector("@c[]", OptionalInt.empty(), null, OptionalInt.empty(), null, null, null, null); - private static UuidArgument uuidArgument = UuidArgument.uuid(); + private static final UuidArgument uuidArgument = UuidArgument.uuid(); /** * A {@link ComputerSelector} which matches all computers. @@ -279,7 +279,7 @@ public record ComputerSelector( private @Nullable String label; private @Nullable ComputerFamily family; private @Nullable AABB bounds; - private @Nullable MinMaxBounds.Doubles range; + private MinMaxBounds.@Nullable Doubles range; } private static final Map options; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/command/builder/CommandBuilder.java b/projects/common/src/main/java/dan200/computercraft/shared/command/builder/CommandBuilder.java index 02401973e..5f9372b71 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/command/builder/CommandBuilder.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/command/builder/CommandBuilder.java @@ -12,8 +12,8 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.tree.CommandNode; import dan200.computercraft.shared.command.arguments.RepeatArgumentType; import net.minecraft.commands.CommandSourceStack; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/command/builder/HelpingArgumentBuilder.java b/projects/common/src/main/java/dan200/computercraft/shared/command/builder/HelpingArgumentBuilder.java index 1edf06554..de3ef8f18 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/command/builder/HelpingArgumentBuilder.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/command/builder/HelpingArgumentBuilder.java @@ -14,8 +14,8 @@ import net.minecraft.ChatFormatting; import net.minecraft.commands.CommandSourceStack; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collection; import java.util.function.Predicate; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/command/text/ChatHelpers.java b/projects/common/src/main/java/dan200/computercraft/shared/command/text/ChatHelpers.java index 1c9a910f3..d44a37fb9 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/command/text/ChatHelpers.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/command/text/ChatHelpers.java @@ -12,8 +12,7 @@ import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.HoverEvent; import net.minecraft.network.chat.MutableComponent; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Various helpers for building chat messages. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/command/text/ServerTableFormatter.java b/projects/common/src/main/java/dan200/computercraft/shared/command/text/ServerTableFormatter.java index bd50c7ae3..af2e3e4ed 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/command/text/ServerTableFormatter.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/command/text/ServerTableFormatter.java @@ -7,8 +7,7 @@ package dan200.computercraft.shared.command.text; import net.minecraft.commands.CommandSourceStack; import net.minecraft.network.chat.Component; import org.apache.commons.lang3.StringUtils; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class ServerTableFormatter implements TableFormatter { private final CommandSourceStack source; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/command/text/TableBuilder.java b/projects/common/src/main/java/dan200/computercraft/shared/command/text/TableBuilder.java index dbf719d12..8b3a5f2e2 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/command/text/TableBuilder.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/command/text/TableBuilder.java @@ -11,15 +11,15 @@ import dan200.computercraft.shared.network.server.ServerNetworking; import net.minecraft.commands.CommandSourceStack; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; public class TableBuilder { private final String id; private int columns = -1; - private final @Nullable Component[] headers; + private final Component @Nullable [] headers; private final ArrayList rows = new ArrayList<>(); private int additional; @@ -72,8 +72,7 @@ public class TableBuilder { return columns; } - @Nullable - public Component[] getHeaders() { + public Component @Nullable [] getHeaders() { return headers; } diff --git a/projects/common/src/main/java/dan200/computercraft/shared/command/text/TableFormatter.java b/projects/common/src/main/java/dan200/computercraft/shared/command/text/TableFormatter.java index d5a5c9306..d6f5ee145 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/command/text/TableFormatter.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/command/text/TableFormatter.java @@ -7,8 +7,7 @@ package dan200.computercraft.shared.command.text; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import org.apache.commons.lang3.StringUtils; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import static dan200.computercraft.shared.command.text.ChatHelpers.coloured; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/common/HorizontalContainerBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/common/HorizontalContainerBlock.java index ab8b4965b..77f39ea44 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/common/HorizontalContainerBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/common/HorizontalContainerBlock.java @@ -23,8 +23,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.BlockHitResult; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * A block which has a container and can be placed in a horizontal direction. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlock.java index 4e093af11..4bfdb694d 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlock.java @@ -36,8 +36,8 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.BlockHitResult; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; public abstract class AbstractComputerBlock extends HorizontalDirectionalBlock implements IBundledRedstoneBlock, EntityBlock { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java index cd7609460..09cea96ed 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java @@ -34,8 +34,8 @@ import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Objects; import java.util.UUID; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerBlock.java index 44a3e85f4..31be162b8 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerBlock.java @@ -17,8 +17,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.level.block.state.properties.EnumProperty; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class ComputerBlock extends AbstractComputerBlock { public static final EnumProperty STATE = EnumProperty.create("state", ComputerState.class); diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerBlockEntity.java index ab6f90e7b..68d529725 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerBlockEntity.java @@ -20,8 +20,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class ComputerBlockEntity extends AbstractComputerBlockEntity { private @Nullable IPeripheral peripheral; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerPeripheral.java index 44db65e9f..4d4eb7528 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerPeripheral.java @@ -7,8 +7,7 @@ package dan200.computercraft.shared.computer.blocks; import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.core.apis.OSAPI; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * A computer or turtle wrapped as a peripheral. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ComputerSystem.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ComputerSystem.java index 7302fcccc..30b2ff5a7 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ComputerSystem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ComputerSystem.java @@ -13,8 +13,8 @@ import dan200.computercraft.core.apis.IAPIEnvironment; import dan200.computercraft.core.computer.ApiLifecycle; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Map; /** diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerComputer.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerComputer.java index 5582c2f58..c3f9c9bae 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerComputer.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerComputer.java @@ -29,8 +29,8 @@ import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -214,7 +214,7 @@ public class ServerComputer implements ComputerEnvironment, ComputerEvents.Recei } @Override - public final void queueEvent(String event, @Nullable Object[] arguments) { + public final void queueEvent(String event, @Nullable Object @Nullable [] arguments) { computer.queueEvent(event, arguments); } diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerComputerRegistry.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerComputerRegistry.java index 326562c7a..14baa5b5d 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerComputerRegistry.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerComputerRegistry.java @@ -6,8 +6,8 @@ package dan200.computercraft.shared.computer.core; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.*; public class ServerComputerRegistry { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerContext.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerContext.java index 3131c667a..169b46527 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerContext.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerContext.java @@ -26,10 +26,10 @@ import dan200.computercraft.shared.util.IDAssigner; import net.minecraft.SharedConstants; import net.minecraft.server.MinecraftServer; import net.minecraft.world.level.storage.LevelResource; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.io.InputStream; import java.nio.file.Path; import java.util.Objects; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/inventory/AbstractComputerMenu.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/inventory/AbstractComputerMenu.java index 5f8197dce..0567e67e1 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/inventory/AbstractComputerMenu.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/inventory/AbstractComputerMenu.java @@ -21,8 +21,8 @@ import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.SimpleContainerData; import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.function.Predicate; public abstract class AbstractComputerMenu extends AbstractContainerMenu implements ComputerMenu { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/items/AbstractComputerItem.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/items/AbstractComputerItem.java index f9499e7dc..cdffc644b 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/items/AbstractComputerItem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/items/AbstractComputerItem.java @@ -16,8 +16,8 @@ import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; public abstract class AbstractComputerItem extends BlockItem implements IComputerItem, IMedia { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/items/CommandComputerItem.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/items/CommandComputerItem.java index 062bef8ad..f8ce2ff76 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/items/CommandComputerItem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/items/CommandComputerItem.java @@ -10,7 +10,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.state.BlockState; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; /** * A {@link ComputerItem} which prevents players placing it without permission. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/items/ComputerItem.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/items/ComputerItem.java index 56170e454..0541daa3a 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/items/ComputerItem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/items/ComputerItem.java @@ -8,8 +8,7 @@ import dan200.computercraft.shared.computer.blocks.ComputerBlock; import net.minecraft.network.chat.Component; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class ComputerItem extends AbstractComputerItem { public ComputerItem(ComputerBlock block, Properties settings) { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/items/IComputerItem.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/items/IComputerItem.java index 03bcb762e..e0253b31f 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/items/IComputerItem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/items/IComputerItem.java @@ -6,8 +6,7 @@ package dan200.computercraft.shared.computer.items; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public interface IComputerItem { String NBT_ID = "ComputerId"; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/menu/ServerInputState.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/menu/ServerInputState.java index 7a70e76f9..4bfeeba2c 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/menu/ServerInputState.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/menu/ServerInputState.java @@ -19,10 +19,10 @@ import it.unimi.dsi.fastutil.ints.IntSet; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.inventory.AbstractContainerMenu; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.nio.ByteBuffer; import java.util.List; import java.util.UUID; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/ComputerMBean.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/ComputerMBean.java index 0da446e75..7b03d161e 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/ComputerMBean.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/ComputerMBean.java @@ -14,10 +14,10 @@ import dan200.computercraft.shared.computer.metrics.basic.AggregatedMetric; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import net.minecraft.server.MinecraftServer; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import javax.management.*; import java.lang.management.ManagementFactory; import java.util.ArrayList; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/basic/BasicComputerMetricsObserver.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/basic/BasicComputerMetricsObserver.java index 90eefbb64..78beaa60c 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/basic/BasicComputerMetricsObserver.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/basic/BasicComputerMetricsObserver.java @@ -5,12 +5,12 @@ package dan200.computercraft.shared.computer.metrics.basic; import com.google.common.collect.MapMaker; +import com.google.errorprone.annotations.concurrent.GuardedBy; import dan200.computercraft.core.metrics.Metric; import dan200.computercraft.shared.computer.core.ServerComputer; import dan200.computercraft.shared.computer.metrics.ComputerMetricsObserver; import dan200.computercraft.shared.computer.metrics.GlobalMetrics; -import javax.annotation.concurrent.GuardedBy; import java.util.ArrayList; import java.util.List; import java.util.Map; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/basic/ComputerMetrics.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/basic/ComputerMetrics.java index 91d63d58e..1ff2b0c2c 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/basic/ComputerMetrics.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/metrics/basic/ComputerMetrics.java @@ -6,8 +6,8 @@ package dan200.computercraft.shared.computer.metrics.basic; import dan200.computercraft.core.metrics.Metric; import dan200.computercraft.shared.computer.core.ServerComputer; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.lang.ref.WeakReference; import java.util.Arrays; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/terminal/TerminalState.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/terminal/TerminalState.java index e756108e7..c0c6335ad 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/terminal/TerminalState.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/terminal/TerminalState.java @@ -6,8 +6,7 @@ package dan200.computercraft.shared.computer.terminal; import net.minecraft.network.FriendlyByteBuf; import org.jetbrains.annotations.Contract; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * A snapshot of a terminal's state. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/upload/FileUpload.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/upload/FileUpload.java index e1d371b99..4648b8161 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/upload/FileUpload.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/upload/FileUpload.java @@ -4,10 +4,10 @@ package dan200.computercraft.shared.computer.upload; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.nio.ByteBuffer; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -52,8 +52,7 @@ public class FileUpload { return digest != null && Arrays.equals(checksum, digest); } - @Nullable - public static byte[] getDigest(ByteBuffer bytes) { + public static byte @Nullable [] getDigest(ByteBuffer bytes) { try { var digest = MessageDigest.getInstance("SHA-256"); digest.update(bytes.duplicate()); diff --git a/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigFile.java b/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigFile.java index 7dc998520..f3f106754 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigFile.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigFile.java @@ -5,9 +5,9 @@ package dan200.computercraft.shared.config; import com.google.common.base.Splitter; +import com.google.errorprone.annotations.OverridingMethodsMustInvokeSuper; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; -import javax.annotation.OverridingMethodsMustInvokeSuper; import java.nio.file.Path; import java.util.*; import java.util.function.Predicate; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigSpec.java b/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigSpec.java index 201dcb635..9598f3974 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigSpec.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigSpec.java @@ -16,8 +16,8 @@ import dan200.computercraft.shared.platform.PlatformHelper; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.Filter; import org.apache.logging.log4j.core.filter.MarkerFilter; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.file.Path; import java.util.List; import java.util.concurrent.TimeUnit; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/config/ProxyPasswordConfig.java b/projects/common/src/main/java/dan200/computercraft/shared/config/ProxyPasswordConfig.java index 3c45f64f4..feacea5ed 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/config/ProxyPasswordConfig.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/config/ProxyPasswordConfig.java @@ -5,10 +5,10 @@ package dan200.computercraft.shared.config; import dan200.computercraft.core.CoreConfig; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/container/BasicWorldlyContainer.java b/projects/common/src/main/java/dan200/computercraft/shared/container/BasicWorldlyContainer.java index b2e92bd79..a1dc1212c 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/container/BasicWorldlyContainer.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/container/BasicWorldlyContainer.java @@ -7,8 +7,7 @@ package dan200.computercraft.shared.container; import net.minecraft.core.Direction; import net.minecraft.world.WorldlyContainer; import net.minecraft.world.item.ItemStack; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * A basic implementation of {@link WorldlyContainer} which operates on a {@linkplain #getContents() list of stacks}. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/details/ItemDetails.java b/projects/common/src/main/java/dan200/computercraft/shared/details/ItemDetails.java index d29249773..794a337d8 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/details/ItemDetails.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/details/ItemDetails.java @@ -13,8 +13,8 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.item.EnchantedBookItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.*; /** diff --git a/projects/common/src/main/java/dan200/computercraft/shared/integration/PermissionRegistry.java b/projects/common/src/main/java/dan200/computercraft/shared/integration/PermissionRegistry.java index cb700c05f..9ba20f60a 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/integration/PermissionRegistry.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/integration/PermissionRegistry.java @@ -4,13 +4,13 @@ package dan200.computercraft.shared.integration; +import com.google.errorprone.annotations.OverridingMethodsMustInvokeSuper; import com.mojang.brigadier.builder.ArgumentBuilder; import dan200.computercraft.shared.command.CommandComputerCraft; import dan200.computercraft.shared.command.UserLevel; import dan200.computercraft.shared.platform.RegistrationHelper; import net.minecraft.commands.CommandSourceStack; -import javax.annotation.OverridingMethodsMustInvokeSuper; import java.util.Optional; import java.util.ServiceLoader; import java.util.function.Predicate; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/integration/UpgradeRecipeGenerator.java b/projects/common/src/main/java/dan200/computercraft/shared/integration/UpgradeRecipeGenerator.java index 95a7700d9..809dd5dce 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/integration/UpgradeRecipeGenerator.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/integration/UpgradeRecipeGenerator.java @@ -22,8 +22,8 @@ import net.minecraft.world.item.crafting.CraftingBookCategory; import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.ShapedRecipe; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.*; import java.util.function.Function; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/lectern/CustomLecternBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/lectern/CustomLecternBlock.java index 862c12800..11946fcda 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/lectern/CustomLecternBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/lectern/CustomLecternBlock.java @@ -28,7 +28,7 @@ import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; /** * Extends {@link LecternBlock} with support for {@linkplain PrintoutItem printouts}. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/media/items/DiskItem.java b/projects/common/src/main/java/dan200/computercraft/shared/media/items/DiskItem.java index 0b38fa8fe..01e1a4b0e 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/media/items/DiskItem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/media/items/DiskItem.java @@ -22,8 +22,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; public class DiskItem extends Item implements IMedia, IColouredItem { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/media/items/PrintoutItem.java b/projects/common/src/main/java/dan200/computercraft/shared/media/items/PrintoutItem.java index 6e9421933..7c8fbf0b2 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/media/items/PrintoutItem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/media/items/PrintoutItem.java @@ -19,8 +19,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; public class PrintoutItem extends Item { @@ -68,7 +68,7 @@ public class PrintoutItem extends Item { return new InteractionResultHolder<>(InteractionResult.sidedSuccess(world.isClientSide), stack); } - private ItemStack createFromTitleAndText(@Nullable String title, @Nullable String[] text, @Nullable String[] colours) { + private ItemStack createFromTitleAndText(@Nullable String title, String @Nullable [] text, String @Nullable [] colours) { var stack = new ItemStack(this); // Build NBT @@ -91,15 +91,15 @@ public class PrintoutItem extends Item { return stack; } - public static ItemStack createSingleFromTitleAndText(@Nullable String title, @Nullable String[] text, @Nullable String[] colours) { + public static ItemStack createSingleFromTitleAndText(@Nullable String title, String @Nullable [] text, String @Nullable [] colours) { return ModRegistry.Items.PRINTED_PAGE.get().createFromTitleAndText(title, text, colours); } - public static ItemStack createMultipleFromTitleAndText(@Nullable String title, @Nullable String[] text, @Nullable String[] colours) { + public static ItemStack createMultipleFromTitleAndText(@Nullable String title, String @Nullable [] text, String @Nullable [] colours) { return ModRegistry.Items.PRINTED_PAGES.get().createFromTitleAndText(title, text, colours); } - public static ItemStack createBookFromTitleAndText(@Nullable String title, @Nullable String[] text, @Nullable String[] colours) { + public static ItemStack createBookFromTitleAndText(@Nullable String title, String @Nullable [] text, String @Nullable [] colours) { return ModRegistry.Items.PRINTED_BOOK.get().createFromTitleAndText(title, text, colours); } diff --git a/projects/common/src/main/java/dan200/computercraft/shared/media/items/RecordMedia.java b/projects/common/src/main/java/dan200/computercraft/shared/media/items/RecordMedia.java index 8442d7d17..658a7977d 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/media/items/RecordMedia.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/media/items/RecordMedia.java @@ -8,8 +8,7 @@ import dan200.computercraft.api.media.IMedia; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.RecordItem; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * An implementation of {@link IMedia} for {@link RecordItem}. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/media/items/TreasureDiskItem.java b/projects/common/src/main/java/dan200/computercraft/shared/media/items/TreasureDiskItem.java index f5fab821a..dc6e49c30 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/media/items/TreasureDiskItem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/media/items/TreasureDiskItem.java @@ -20,8 +20,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.IOException; import java.util.List; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/network/client/ClientNetworkContext.java b/projects/common/src/main/java/dan200/computercraft/shared/network/client/ClientNetworkContext.java index d5822536d..f8c3e055b 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/network/client/ClientNetworkContext.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/network/client/ClientNetworkContext.java @@ -14,8 +14,8 @@ import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.UUID; /** diff --git a/projects/common/src/main/java/dan200/computercraft/shared/network/client/MonitorClientMessage.java b/projects/common/src/main/java/dan200/computercraft/shared/network/client/MonitorClientMessage.java index 97f7c73cd..2be9dd233 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/network/client/MonitorClientMessage.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/network/client/MonitorClientMessage.java @@ -10,8 +10,7 @@ import dan200.computercraft.shared.network.NetworkMessage; import dan200.computercraft.shared.network.NetworkMessages; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class MonitorClientMessage implements NetworkMessage { private final BlockPos pos; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/network/client/PlayRecordClientMessage.java b/projects/common/src/main/java/dan200/computercraft/shared/network/client/PlayRecordClientMessage.java index c5580ae48..d608ae841 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/network/client/PlayRecordClientMessage.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/network/client/PlayRecordClientMessage.java @@ -11,8 +11,7 @@ import dan200.computercraft.shared.peripheral.diskdrive.DiskDriveBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.sounds.SoundEvent; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Starts or stops a record on the client, depending on if {@link #soundEvent} is {@code null}. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/network/client/PocketComputerDataMessage.java b/projects/common/src/main/java/dan200/computercraft/shared/network/client/PocketComputerDataMessage.java index 0f0ac70c3..e3b67acd6 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/network/client/PocketComputerDataMessage.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/network/client/PocketComputerDataMessage.java @@ -11,8 +11,8 @@ import dan200.computercraft.shared.network.NetworkMessage; import dan200.computercraft.shared.network.NetworkMessages; import dan200.computercraft.shared.pocket.core.PocketServerComputer; import net.minecraft.network.FriendlyByteBuf; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.UUID; /** diff --git a/projects/common/src/main/java/dan200/computercraft/shared/network/client/UploadResultMessage.java b/projects/common/src/main/java/dan200/computercraft/shared/network/client/UploadResultMessage.java index ec2b8e192..988d1db9e 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/network/client/UploadResultMessage.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/network/client/UploadResultMessage.java @@ -12,8 +12,7 @@ import dan200.computercraft.shared.network.NetworkMessages; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.world.inventory.AbstractContainerMenu; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class UploadResultMessage implements NetworkMessage { private final int containerId; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/network/server/ComputerServerMessage.java b/projects/common/src/main/java/dan200/computercraft/shared/network/server/ComputerServerMessage.java index 0abd197f6..c039f0f00 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/network/server/ComputerServerMessage.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/network/server/ComputerServerMessage.java @@ -4,14 +4,13 @@ package dan200.computercraft.shared.network.server; +import com.google.errorprone.annotations.OverridingMethodsMustInvokeSuper; import dan200.computercraft.shared.computer.menu.ComputerMenu; import dan200.computercraft.shared.network.NetworkMessage; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; -import javax.annotation.OverridingMethodsMustInvokeSuper; - /** * A packet, which performs an action on the currently open {@link ComputerMenu}. */ diff --git a/projects/common/src/main/java/dan200/computercraft/shared/network/server/UploadFileMessage.java b/projects/common/src/main/java/dan200/computercraft/shared/network/server/UploadFileMessage.java index d96ec0a81..9c9cf724d 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/network/server/UploadFileMessage.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/network/server/UploadFileMessage.java @@ -14,8 +14,8 @@ import dan200.computercraft.shared.network.NetworkMessages; import io.netty.handler.codec.DecoderException; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.inventory.AbstractContainerMenu; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/commandblock/CommandBlockPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/commandblock/CommandBlockPeripheral.java index e35080a48..143427420 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/commandblock/CommandBlockPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/commandblock/CommandBlockPeripheral.java @@ -8,8 +8,7 @@ import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.shared.computer.apis.CommandAPI; import net.minecraft.world.level.block.entity.CommandBlockEntity; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * This peripheral allows you to interact with command blocks. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlock.java index 2edca1700..bc550ec2f 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlock.java @@ -22,8 +22,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.BlockHitResult; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class DiskDriveBlock extends HorizontalContainerBlock { public static final EnumProperty STATE = EnumProperty.create("state", DiskDriveState.class); diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlockEntity.java index bcd006c74..4e3dad922 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlockEntity.java @@ -26,8 +26,8 @@ import net.minecraft.world.level.block.LevelEvent; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDrivePeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDrivePeripheral.java index d103baf96..6bd3961c2 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDrivePeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDrivePeripheral.java @@ -10,8 +10,8 @@ import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.core.util.StringUtil; import dan200.computercraft.shared.media.items.DiskItem; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Optional; /** @@ -60,9 +60,8 @@ public class DiskDrivePeripheral implements IPeripheral { * @return The label of the disk, or {@code nil} if either no disk is inserted or the disk doesn't have a label. * @cc.treturn string|nil The label of the disk, or {@code nil} if either no disk is inserted or the disk doesn't have a label. */ - @Nullable @LuaFunction - public final Object[] getDiskLabel() { + public final @Nullable Object @Nullable [] getDiskLabel() { var media = diskDrive.getMedia(); return media.media() == null ? null : new Object[]{ media.media().getLabel(media.stack()) }; } @@ -166,9 +165,8 @@ public class DiskDrivePeripheral implements IPeripheral { * @cc.treturn number|nil The ID of the disk in the drive, or {@code nil} if no disk with an ID is inserted. * @cc.since 1.4 */ - @Nullable @LuaFunction - public final Object[] getDiskID() { + public final @Nullable Object @Nullable [] getDiskID() { var disk = diskDrive.getMedia().stack(); return disk.getItem() instanceof DiskItem ? new Object[]{ DiskItem.getDiskID(disk) } : null; } diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/MediaStack.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/MediaStack.java index dc56eabcc..7a1390bc1 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/MediaStack.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/MediaStack.java @@ -8,8 +8,7 @@ import dan200.computercraft.api.media.IMedia; import dan200.computercraft.impl.MediaProviders; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.item.ItemStack; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * An immutable snapshot of the current disk. This allows us to read the stack in a thread-safe manner. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/ComponentLookup.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/ComponentLookup.java index 082391e14..6a86ca2c2 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/ComponentLookup.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/ComponentLookup.java @@ -9,8 +9,7 @@ import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Extract some component (for instance a capability on Forge, or a {@code BlockApiLookup} on Fabric) from a block and diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheral.java index ee4f1f299..567a3df9d 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheral.java @@ -14,8 +14,8 @@ import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.core.computer.GuardedLuaContext; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntity; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; import java.util.Set; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheralBuilder.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheralBuilder.java index 67d2ea8c4..f5759e084 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheralBuilder.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheralBuilder.java @@ -11,10 +11,10 @@ import dan200.computercraft.core.methods.PeripheralMethod; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheralProvider.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheralProvider.java index 0bdce7984..aa8066b2a 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheralProvider.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/GenericPeripheralProvider.java @@ -13,8 +13,8 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.block.entity.BlockEntity; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; import java.util.Objects; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/AbstractInventoryMethods.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/AbstractInventoryMethods.java index 78fd2d934..125fff0b7 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/AbstractInventoryMethods.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/AbstractInventoryMethods.java @@ -11,8 +11,8 @@ import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.api.peripheral.GenericPeripheral; import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.PeripheralType; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Map; import java.util.Optional; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/ModemPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/ModemPeripheral.java index 7977ed342..58f7fb0aa 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/ModemPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/ModemPeripheral.java @@ -13,8 +13,8 @@ import dan200.computercraft.api.network.PacketReceiver; import dan200.computercraft.api.network.PacketSender; import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.IPeripheral; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.HashSet; import java.util.Set; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/ModemState.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/ModemState.java index d1e9031b1..816b5a0f8 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/ModemState.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/ModemState.java @@ -7,8 +7,8 @@ package dan200.computercraft.shared.peripheral.modem; import dan200.computercraft.api.lua.LuaException; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.concurrent.atomic.AtomicBoolean; public class ModemState { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlock.java index 0d068b58f..e1f7d0f44 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlock.java @@ -35,8 +35,8 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.EnumMap; import static dan200.computercraft.shared.util.WaterloggableHelpers.WATERLOGGED; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlockEntity.java index 5e619d361..7b17ab0a2 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlockEntity.java @@ -24,8 +24,8 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Objects; public class CableBlockEntity extends BlockEntity { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlockItem.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlockItem.java index 7149f01ee..9e96f6069 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlockItem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableBlockItem.java @@ -14,8 +14,7 @@ import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import static dan200.computercraft.shared.peripheral.modem.wired.CableBlock.*; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableModemVariant.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableModemVariant.java index e27749b0e..31a506e77 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableModemVariant.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/CableModemVariant.java @@ -6,8 +6,7 @@ package dan200.computercraft.shared.peripheral.modem.wired; import net.minecraft.core.Direction; import net.minecraft.util.StringRepresentable; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public enum CableModemVariant implements StringRepresentable { None("none", null, false, false), diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemFullBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemFullBlock.java index 6f9e0b958..141a2aca7 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemFullBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemFullBlock.java @@ -23,8 +23,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class WiredModemFullBlock extends Block implements EntityBlock { public static final BooleanProperty MODEM_ON = BooleanProperty.create("modem"); diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemFullBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemFullBlockEntity.java index 288b0e1cd..faef2be68 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemFullBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemFullBlockEntity.java @@ -24,8 +24,8 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.*; import static dan200.computercraft.shared.peripheral.modem.wired.WiredModemFullBlock.MODEM_ON; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemLocalPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemLocalPeripheral.java index 3893b4ac4..965a4cc63 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemLocalPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemLocalPeripheral.java @@ -14,8 +14,8 @@ import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.world.level.Level; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Map; import static dan200.computercraft.core.util.Nullability.assertNonNull; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemPeripheral.java index ce1374b27..b47f4cbcc 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemPeripheral.java @@ -24,10 +24,10 @@ import dan200.computercraft.shared.peripheral.modem.ModemState; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -130,7 +130,7 @@ public abstract class WiredModemPeripheral extends ModemPeripheral implements Wi * @see PeripheralAPI#getType */ @LuaFunction - public final @Nullable Object[] getTypeRemote(IComputerAccess computer, String name) { + public final Object @Nullable [] getTypeRemote(IComputerAccess computer, String name) { var wrapper = getWrapper(computer, name); return wrapper == null ? null : LuaUtil.consArray(wrapper.getType(), wrapper.getAdditionalTypes()); } @@ -150,7 +150,7 @@ public abstract class WiredModemPeripheral extends ModemPeripheral implements Wi * @see PeripheralAPI#getType */ @LuaFunction - public final @Nullable Object[] hasTypeRemote(IComputerAccess computer, String name, String type) { + public final Object @Nullable [] hasTypeRemote(IComputerAccess computer, String name, String type) { var wrapper = getWrapper(computer, name); return wrapper == null ? null : new Object[]{ wrapper.getType().equals(type) || wrapper.getAdditionalTypes().contains(type) }; } @@ -168,7 +168,7 @@ public abstract class WiredModemPeripheral extends ModemPeripheral implements Wi * @see PeripheralAPI#getMethods */ @LuaFunction - public final @Nullable Object[] getMethodsRemote(IComputerAccess computer, String name) { + public final Object @Nullable [] getMethodsRemote(IComputerAccess computer, String name) { var wrapper = getWrapper(computer, name); if (wrapper == null) return null; @@ -215,7 +215,7 @@ public abstract class WiredModemPeripheral extends ModemPeripheral implements Wi * @cc.since 1.80pr1.7 */ @LuaFunction - public final @Nullable Object[] getNameLocal() { + public final Object @Nullable [] getNameLocal() { var local = localPeripheral.getConnectedName(); return local == null ? null : new Object[]{ local }; } diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wireless/WirelessModemBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wireless/WirelessModemBlock.java index 391dbd785..7881773b3 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wireless/WirelessModemBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wireless/WirelessModemBlock.java @@ -24,8 +24,7 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import static dan200.computercraft.shared.util.WaterloggableHelpers.WATERLOGGED; import static dan200.computercraft.shared.util.WaterloggableHelpers.getFluidStateForPlacement; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wireless/WirelessModemBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wireless/WirelessModemBlockEntity.java index 10fe36371..e5b895110 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wireless/WirelessModemBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wireless/WirelessModemBlockEntity.java @@ -15,8 +15,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class WirelessModemBlockEntity extends BlockEntity { private static class Peripheral extends WirelessModemPeripheral { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/ClientMonitor.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/ClientMonitor.java index 850379096..ee2982efb 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/ClientMonitor.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/ClientMonitor.java @@ -7,8 +7,8 @@ package dan200.computercraft.shared.peripheral.monitor; import dan200.computercraft.core.terminal.Terminal; import dan200.computercraft.shared.computer.terminal.NetworkedTerminal; import dan200.computercraft.shared.computer.terminal.TerminalState; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.function.Supplier; public final class ClientMonitor { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorBlock.java index 41d0b6182..f352948f3 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorBlock.java @@ -29,8 +29,7 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.BlockHitResult; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class MonitorBlock extends HorizontalDirectionalBlock implements EntityBlock { public static final DirectionProperty ORIENTATION = DirectionProperty.create("orientation", diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorBlockEntity.java index ae4a434b0..6df370e21 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorBlockEntity.java @@ -23,10 +23,10 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.util.function.Consumer; public class MonitorBlockEntity extends BlockEntity { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorPeripheral.java index c07bfb41e..2c1cf681e 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorPeripheral.java @@ -11,8 +11,7 @@ import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.core.apis.TermMethods; import dan200.computercraft.core.terminal.Terminal; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Monitors are a block which act as a terminal, displaying information on one side. This allows them to be read and diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorState.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorState.java index ff8e4b406..7ec271ae6 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorState.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorState.java @@ -4,7 +4,7 @@ package dan200.computercraft.shared.peripheral.monitor; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; final class MonitorState { public static final MonitorState UNLOADED = new MonitorState(State.UNLOADED, null); diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorWatcher.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorWatcher.java index 2317f9da9..48c44e024 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorWatcher.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorWatcher.java @@ -11,8 +11,8 @@ import dan200.computercraft.shared.network.server.ServerNetworking; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.chunk.LevelChunk; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ArrayDeque; import java.util.Queue; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/ServerMonitor.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/ServerMonitor.java index b7d43b8db..16aaf5cec 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/ServerMonitor.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/monitor/ServerMonitor.java @@ -8,8 +8,8 @@ import com.google.common.annotations.VisibleForTesting; import dan200.computercraft.core.terminal.Terminal; import dan200.computercraft.shared.computer.terminal.NetworkedTerminal; import dan200.computercraft.shared.util.TickScheduler; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.concurrent.atomic.AtomicBoolean; public class ServerMonitor { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterBlock.java index b0bede7cf..698354fa1 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterBlock.java @@ -13,8 +13,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class PrinterBlock extends HorizontalContainerBlock { public static final BooleanProperty TOP = BooleanProperty.create("top"); diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterBlockEntity.java index a593e6836..c6fcc8efc 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterBlockEntity.java @@ -21,8 +21,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public final class PrinterBlockEntity extends AbstractContainerBlockEntity implements BasicWorldlyContainer { private static final String NBT_PRINTING = "Printing"; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterPeripheral.java index 60943702e..c831bb705 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/printer/PrinterPeripheral.java @@ -10,8 +10,8 @@ import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.core.terminal.Terminal; import dan200.computercraft.core.util.StringUtil; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Optional; /** diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/redstone/RedstoneRelayBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/redstone/RedstoneRelayBlock.java index 61146ee09..5ec209c7b 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/redstone/RedstoneRelayBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/redstone/RedstoneRelayBlock.java @@ -18,7 +18,6 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; -import javax.annotation.Nonnull; /** * The block for redstone relays. This mostly just forwards method calls to the {@linkplain RedstoneRelayBlockEntity @@ -50,13 +49,13 @@ public final class RedstoneRelayBlock extends HorizontalDirectionalBlock impleme @Override @Deprecated - public boolean isSignalSource(@Nonnull BlockState state) { + public boolean isSignalSource(BlockState state) { return true; } @Override @Deprecated - public int getDirectSignal(@Nonnull BlockState state, BlockGetter level, @Nonnull BlockPos pos, @Nonnull Direction incomingSide) { + public int getDirectSignal(BlockState state, BlockGetter level, BlockPos pos, Direction incomingSide) { return level.getBlockEntity(pos) instanceof RedstoneRelayBlockEntity relay ? relay.getRedstoneOutput(incomingSide.getOpposite()) : 0; } @@ -73,7 +72,7 @@ public final class RedstoneRelayBlock extends HorizontalDirectionalBlock impleme @Override @Deprecated - public void neighborChanged(@Nonnull BlockState state, @Nonnull Level world, @Nonnull BlockPos pos, @Nonnull Block neighbourBlock, @Nonnull BlockPos neighbourPos, boolean isMoving) { + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block neighbourBlock, BlockPos neighbourPos, boolean isMoving) { if (world.getBlockEntity(pos) instanceof RedstoneRelayBlockEntity relay) relay.neighborChanged(neighbourPos); } diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/redstone/RedstoneRelayPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/redstone/RedstoneRelayPeripheral.java index 7f03cc9cd..74bde1829 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/redstone/RedstoneRelayPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/redstone/RedstoneRelayPeripheral.java @@ -9,9 +9,7 @@ import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.core.apis.RedstoneAPI; import dan200.computercraft.core.apis.RedstoneMethods; import dan200.computercraft.core.redstone.RedstoneAccess; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * The redstone relay is a peripheral that allows reading and outputting redstone signals. While this is not very useful @@ -46,7 +44,6 @@ public final class RedstoneRelayPeripheral extends RedstoneMethods implements IP super(access); } - @Nonnull @Override public String getType() { return "redstone_relay"; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/DfpwmState.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/DfpwmState.java index f5988a198..9921fd234 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/DfpwmState.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/DfpwmState.java @@ -7,8 +7,8 @@ package dan200.computercraft.shared.peripheral.speaker; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaTable; import dan200.computercraft.shared.util.PauseAwareTimer; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.ByteBuffer; import java.util.Optional; import java.util.concurrent.TimeUnit; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerBlock.java index c19b9522e..a5d7b7c14 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerBlock.java @@ -18,8 +18,7 @@ import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class SpeakerBlock extends HorizontalDirectionalBlock implements EntityBlock { private static final BlockEntityTicker serverTicker = (level, pos, state, drive) -> drive.serverTick(); diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerBlockEntity.java index 972f67be5..041f0f212 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerBlockEntity.java @@ -13,8 +13,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class SpeakerBlockEntity extends BlockEntity { private final SpeakerPeripheral peripheral; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerPeripheral.java index 54b8d6e07..757a81195 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerPeripheral.java @@ -31,8 +31,8 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.world.item.RecordItem; import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; import java.util.Optional; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerPosition.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerPosition.java index ec8c54c62..e2d2e786a 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerPosition.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/speaker/SpeakerPosition.java @@ -9,8 +9,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.OptionalInt; public record SpeakerPosition(@Nullable Level level, Vec3 position, @Nullable Entity entity) { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/platform/ComponentAccess.java b/projects/common/src/main/java/dan200/computercraft/shared/platform/ComponentAccess.java index 215adefd3..a66c697b7 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/platform/ComponentAccess.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/platform/ComponentAccess.java @@ -5,8 +5,7 @@ package dan200.computercraft.shared.platform; import net.minecraft.core.Direction; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * A (possibly cached) provider of a component at a specific location. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/platform/PlatformHelper.java b/projects/common/src/main/java/dan200/computercraft/shared/platform/PlatformHelper.java index d24eff2ca..156c16ff1 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/platform/PlatformHelper.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/platform/PlatformHelper.java @@ -53,8 +53,8 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; import java.util.function.BiFunction; import java.util.function.Consumer; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/platform/RegistryWrappers.java b/projects/common/src/main/java/dan200/computercraft/shared/platform/RegistryWrappers.java index 76c289a5b..7069db974 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/platform/RegistryWrappers.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/platform/RegistryWrappers.java @@ -17,8 +17,8 @@ import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.material.Fluid; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.stream.Stream; import java.util.stream.StreamSupport; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/pocket/apis/PocketAPI.java b/projects/common/src/main/java/dan200/computercraft/shared/pocket/apis/PocketAPI.java index d127f50f7..c8331f0c4 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/pocket/apis/PocketAPI.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/pocket/apis/PocketAPI.java @@ -13,8 +13,8 @@ import dan200.computercraft.impl.PocketUpgrades; import net.minecraft.core.NonNullList; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Objects; /** diff --git a/projects/common/src/main/java/dan200/computercraft/shared/pocket/core/PocketBrain.java b/projects/common/src/main/java/dan200/computercraft/shared/pocket/core/PocketBrain.java index 8e6e3c7b2..e6f477437 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/pocket/core/PocketBrain.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/pocket/core/PocketBrain.java @@ -20,8 +20,8 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Collections; import java.util.Map; import java.util.Objects; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/pocket/core/PocketServerComputer.java b/projects/common/src/main/java/dan200/computercraft/shared/pocket/core/PocketServerComputer.java index 670d29991..efa4a5c24 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/pocket/core/PocketServerComputer.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/pocket/core/PocketServerComputer.java @@ -14,8 +14,8 @@ import dan200.computercraft.shared.network.server.ServerNetworking; import dan200.computercraft.shared.pocket.items.PocketComputerItem; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.ChunkPos; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Set; /** diff --git a/projects/common/src/main/java/dan200/computercraft/shared/pocket/items/PocketComputerItem.java b/projects/common/src/main/java/dan200/computercraft/shared/pocket/items/PocketComputerItem.java index e4776d064..df885633e 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/pocket/items/PocketComputerItem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/pocket/items/PocketComputerItem.java @@ -47,8 +47,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; import java.util.Objects; import java.util.UUID; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModem.java b/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModem.java index 6ab3469a0..feff1ba78 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModem.java @@ -10,8 +10,7 @@ import dan200.computercraft.api.pocket.IPocketAccess; import dan200.computercraft.shared.peripheral.modem.wireless.WirelessModemPeripheral; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class PocketModem extends AbstractPocketUpgrade { private final boolean advanced; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModemPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModemPeripheral.java index bd1d8b289..52fd55ea1 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModemPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModemPeripheral.java @@ -10,8 +10,7 @@ import dan200.computercraft.shared.peripheral.modem.ModemState; import dan200.computercraft.shared.peripheral.modem.wireless.WirelessModemPeripheral; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class PocketModemPeripheral extends WirelessModemPeripheral { private final IPocketAccess access; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketSpeaker.java b/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketSpeaker.java index c9508cbc7..657286729 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketSpeaker.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketSpeaker.java @@ -10,8 +10,7 @@ import dan200.computercraft.api.pocket.IPocketAccess; import dan200.computercraft.shared.peripheral.speaker.UpgradeSpeakerPeripheral; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class PocketSpeaker extends AbstractPocketUpgrade { public PocketSpeaker(ResourceLocation id, ItemStack item) { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketSpeakerPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketSpeakerPeripheral.java index 58a8df873..6073b7046 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketSpeakerPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketSpeakerPeripheral.java @@ -8,8 +8,7 @@ import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.api.pocket.IPocketAccess; import dan200.computercraft.shared.peripheral.speaker.SpeakerPosition; import dan200.computercraft.shared.peripheral.speaker.UpgradeSpeakerPeripheral; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class PocketSpeakerPeripheral extends UpgradeSpeakerPeripheral { private final IPocketAccess access; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlock.java index 2456a76ae..72b5792ac 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlock.java @@ -46,8 +46,7 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import static dan200.computercraft.shared.util.WaterloggableHelpers.WATERLOGGED; import static dan200.computercraft.shared.util.WaterloggableHelpers.getFluidStateForPlacement; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlockEntity.java index a1661cac9..2720abbc2 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlockEntity.java @@ -35,8 +35,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Collections; import java.util.function.IntSupplier; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java index 4c62cb236..24305ceae 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java @@ -40,8 +40,8 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.PushReaction; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.*; import java.util.concurrent.TimeUnit; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java index 82bbbe8c7..3e7b41fc2 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java @@ -33,8 +33,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.Vec3; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class TurtlePlaceCommand implements TurtleCommand { private final InteractDirection direction; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java index cff7d1b89..fd9401aa7 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java @@ -14,10 +14,10 @@ import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.util.UUID; public final class TurtlePlayer { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtleToolCommand.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtleToolCommand.java index 5bc19294d..63842d1c4 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtleToolCommand.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/core/TurtleToolCommand.java @@ -5,8 +5,8 @@ package dan200.computercraft.shared.turtle.core; import dan200.computercraft.api.turtle.*; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Locale; public class TurtleToolCommand implements TurtleCommand { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/TurtleMenu.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/TurtleMenu.java index 61d2e67d8..1837b0b50 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/TurtleMenu.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/TurtleMenu.java @@ -21,8 +21,8 @@ import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.inventory.SimpleContainerData; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.function.Predicate; public final class TurtleMenu extends AbstractComputerMenu { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/UpgradeContainer.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/UpgradeContainer.java index 9fff2789a..88172d182 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/UpgradeContainer.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/UpgradeContainer.java @@ -13,8 +13,8 @@ import net.minecraft.core.NonNullList; import net.minecraft.world.Container; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Arrays; import java.util.List; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/UpgradeSlot.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/UpgradeSlot.java index 7947785e1..ecd8957c9 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/UpgradeSlot.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/inventory/UpgradeSlot.java @@ -13,8 +13,7 @@ import net.minecraft.world.Container; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * A slot in the turtle UI which holds the turtle's current upgrade. diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/items/TurtleItem.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/items/TurtleItem.java index 4b5994900..261236216 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/items/TurtleItem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/items/TurtleItem.java @@ -21,8 +21,7 @@ import net.minecraft.world.InteractionResult; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.LayeredCauldronBlock; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import static dan200.computercraft.shared.turtle.core.TurtleBrain.*; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/CraftingTablePeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/CraftingTablePeripheral.java index b22a7ca45..96d77fecf 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/CraftingTablePeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/CraftingTablePeripheral.java @@ -10,8 +10,8 @@ import dan200.computercraft.api.lua.MethodResult; import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.api.turtle.ITurtleAccess; import dan200.computercraft.shared.turtle.core.TurtleCraftCommand; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Optional; /** diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleInventoryCrafting.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleInventoryCrafting.java index e428d36fd..8e6e08171 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleInventoryCrafting.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleInventoryCrafting.java @@ -16,8 +16,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.AbstractList; import java.util.ArrayList; import java.util.Collections; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleModem.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleModem.java index 7235d4431..968c4e68a 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleModem.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleModem.java @@ -14,8 +14,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class TurtleModem extends AbstractTurtleUpgrade { private static class Peripheral extends WirelessModemPeripheral { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleSpeaker.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleSpeaker.java index a0766bd85..3df02429b 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleSpeaker.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleSpeaker.java @@ -14,8 +14,7 @@ import dan200.computercraft.shared.peripheral.speaker.UpgradeSpeakerPeripheral; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class TurtleSpeaker extends AbstractTurtleUpgrade { private static class Peripheral extends UpgradeSpeakerPeripheral { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java index de72b7e09..7fcb6ea57 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java @@ -37,8 +37,8 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.GameMasterBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.EntityHitResult; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Objects; import java.util.function.Function; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/util/BlockEntityHelpers.java b/projects/common/src/main/java/dan200/computercraft/shared/util/BlockEntityHelpers.java index 4e70c55ec..da68ee0a7 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/util/BlockEntityHelpers.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/util/BlockEntityHelpers.java @@ -8,8 +8,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public final class BlockEntityHelpers { private BlockEntityHelpers() { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/util/ColourUtils.java b/projects/common/src/main/java/dan200/computercraft/shared/util/ColourUtils.java index 8f66a6a0a..e00f9f65b 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/util/ColourUtils.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/util/ColourUtils.java @@ -9,8 +9,8 @@ import net.minecraft.tags.TagKey; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; public final class ColourUtils { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/util/ConsList.java b/projects/common/src/main/java/dan200/computercraft/shared/util/ConsList.java index 909959642..67c0bdfc8 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/util/ConsList.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/util/ConsList.java @@ -4,7 +4,7 @@ package dan200.computercraft.shared.util; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.AbstractList; import java.util.Iterator; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/util/DropConsumer.java b/projects/common/src/main/java/dan200/computercraft/shared/util/DropConsumer.java index c287b3891..731e3935c 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/util/DropConsumer.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/util/DropConsumer.java @@ -11,8 +11,8 @@ import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.phys.AABB; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; import java.util.function.Function; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/util/IDAssigner.java b/projects/common/src/main/java/dan200/computercraft/shared/util/IDAssigner.java index 30c17f2a0..d2d3408eb 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/util/IDAssigner.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/util/IDAssigner.java @@ -7,10 +7,10 @@ package dan200.computercraft.shared.util; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.io.BufferedWriter; import java.io.IOException; import java.io.Reader; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java b/projects/common/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java index 3e833566f..c2acfe1f5 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java @@ -17,8 +17,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.Vec3; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public final class InventoryUtil { private InventoryUtil() { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/util/NBTUtil.java b/projects/common/src/main/java/dan200/computercraft/shared/util/NBTUtil.java index 17d2bf8cc..43dc6c3c3 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/util/NBTUtil.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/util/NBTUtil.java @@ -9,10 +9,10 @@ import com.google.common.io.BaseEncoding; import dan200.computercraft.core.util.Nullability; import dan200.computercraft.shared.platform.PlatformHelper; import net.minecraft.nbt.*; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.io.DataOutput; import java.io.DataOutputStream; import java.io.IOException; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/util/PrettyJsonWriter.java b/projects/common/src/main/java/dan200/computercraft/shared/util/PrettyJsonWriter.java index d52459acc..30b91bf3d 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/util/PrettyJsonWriter.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/util/PrettyJsonWriter.java @@ -11,8 +11,8 @@ import com.google.gson.JsonSyntaxException; import com.google.gson.stream.JsonWriter; import net.minecraft.data.DataProvider; import net.minecraft.util.GsonHelper; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.ArrayDeque; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/util/WorldUtil.java b/projects/common/src/main/java/dan200/computercraft/shared/util/WorldUtil.java index 046967211..efae4c230 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/util/WorldUtil.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/util/WorldUtil.java @@ -25,8 +25,7 @@ import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public final class WorldUtil { @SuppressWarnings("deprecation") diff --git a/projects/common/src/test/java/dan200/computercraft/TestPlatformHelper.java b/projects/common/src/test/java/dan200/computercraft/TestPlatformHelper.java index bd7f412cf..1589b235b 100644 --- a/projects/common/src/test/java/dan200/computercraft/TestPlatformHelper.java +++ b/projects/common/src/test/java/dan200/computercraft/TestPlatformHelper.java @@ -53,8 +53,8 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Iterator; import java.util.List; import java.util.function.BiFunction; diff --git a/projects/common/src/test/java/dan200/computercraft/impl/network/wired/NetworkTest.java b/projects/common/src/test/java/dan200/computercraft/impl/network/wired/NetworkTest.java index 0c76f697e..c24e9a73e 100644 --- a/projects/common/src/test/java/dan200/computercraft/impl/network/wired/NetworkTest.java +++ b/projects/common/src/test/java/dan200/computercraft/impl/network/wired/NetworkTest.java @@ -11,9 +11,9 @@ import dan200.computercraft.api.network.wired.WiredNode; import dan200.computercraft.api.peripheral.IPeripheral; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; -import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; import java.util.Set; diff --git a/projects/common/src/testMod/java/dan200/computercraft/export/JsonDump.java b/projects/common/src/testMod/java/dan200/computercraft/export/JsonDump.java index 474c879bf..3504dc184 100644 --- a/projects/common/src/testMod/java/dan200/computercraft/export/JsonDump.java +++ b/projects/common/src/testMod/java/dan200/computercraft/export/JsonDump.java @@ -10,7 +10,10 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; -import java.util.*; +import java.util.Arrays; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; public class JsonDump { public Map itemNames = new TreeMap<>(); diff --git a/projects/common/src/testMod/java/dan200/computercraft/gametest/api/ComputerState.java b/projects/common/src/testMod/java/dan200/computercraft/gametest/api/ComputerState.java index 82a15b1f7..bf1693231 100644 --- a/projects/common/src/testMod/java/dan200/computercraft/gametest/api/ComputerState.java +++ b/projects/common/src/testMod/java/dan200/computercraft/gametest/api/ComputerState.java @@ -7,8 +7,8 @@ package dan200.computercraft.gametest.api; import dan200.computercraft.gametest.core.TestAPI; import net.minecraft.gametest.framework.GameTestAssertException; import net.minecraft.gametest.framework.GameTestSequence; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.HashSet; import java.util.Map; import java.util.Set; diff --git a/projects/common/src/testMod/java/dan200/computercraft/gametest/core/TestAPI.java b/projects/common/src/testMod/java/dan200/computercraft/gametest/core/TestAPI.java index 0ae3a2847..d2887bb90 100644 --- a/projects/common/src/testMod/java/dan200/computercraft/gametest/core/TestAPI.java +++ b/projects/common/src/testMod/java/dan200/computercraft/gametest/core/TestAPI.java @@ -11,10 +11,10 @@ import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.gametest.api.ComputerState; import dan200.computercraft.gametest.api.TestExtensionsKt; import net.minecraft.gametest.framework.GameTestSequence; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.util.Optional; /** diff --git a/projects/common/src/testMod/java/dan200/computercraft/mixin/gametest/client/MinecraftMixin.java b/projects/common/src/testMod/java/dan200/computercraft/mixin/gametest/client/MinecraftMixin.java index 801bd81b6..607f2fb6f 100644 --- a/projects/common/src/testMod/java/dan200/computercraft/mixin/gametest/client/MinecraftMixin.java +++ b/projects/common/src/testMod/java/dan200/computercraft/mixin/gametest/client/MinecraftMixin.java @@ -9,6 +9,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.LevelRenderer; +import org.jspecify.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -17,7 +18,6 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import javax.annotation.Nullable; import java.util.concurrent.atomic.AtomicBoolean; @Mixin(Minecraft.class) diff --git a/projects/core-api/build.gradle.kts b/projects/core-api/build.gradle.kts index 2005b8695..9d75f4b0d 100644 --- a/projects/core-api/build.gradle.kts +++ b/projects/core-api/build.gradle.kts @@ -23,3 +23,5 @@ tasks.javadoc { // Depend on the common API when publishing javadoc classpath += docApi.get() } + +cct.linters(minecraft = false, loader = null) diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/filesystem/FileAttributes.java b/projects/core-api/src/main/java/dan200/computercraft/api/filesystem/FileAttributes.java index 256ac8529..a2010b9c3 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/filesystem/FileAttributes.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/filesystem/FileAttributes.java @@ -4,7 +4,8 @@ package dan200.computercraft.api.filesystem; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.FileTime; diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/filesystem/FileOperationException.java b/projects/core-api/src/main/java/dan200/computercraft/api/filesystem/FileOperationException.java index 9d3ac4260..48656f43e 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/filesystem/FileOperationException.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/filesystem/FileOperationException.java @@ -4,7 +4,8 @@ package dan200.computercraft.api.filesystem; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.io.IOException; import java.io.Serial; import java.util.Objects; diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/lua/IArguments.java b/projects/core-api/src/main/java/dan200/computercraft/api/lua/IArguments.java index fa0018ef7..e70527785 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/lua/IArguments.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/lua/IArguments.java @@ -5,8 +5,8 @@ package dan200.computercraft.api.lua; import org.jetbrains.annotations.Contract; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.ByteBuffer; import java.util.Map; import java.util.Optional; diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/lua/ILuaAPI.java b/projects/core-api/src/main/java/dan200/computercraft/api/lua/ILuaAPI.java index 4b28fd245..3f98e27a3 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/lua/ILuaAPI.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/lua/ILuaAPI.java @@ -4,7 +4,7 @@ package dan200.computercraft.api.lua; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Represents a Lua object which is stored as a global variable on computer startup. This must either provide diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/lua/ILuaCallback.java b/projects/core-api/src/main/java/dan200/computercraft/api/lua/ILuaCallback.java index 0a9e25066..292b2d338 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/lua/ILuaCallback.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/lua/ILuaCallback.java @@ -4,6 +4,8 @@ package dan200.computercraft.api.lua; +import org.jspecify.annotations.Nullable; + /** * A continuation which is called when this coroutine is resumed. * @@ -18,5 +20,5 @@ public interface ILuaCallback { * @return The result of this continuation. Either the result to return to the callee, or another yield. * @throws LuaException On an error. */ - MethodResult resume(Object[] args) throws LuaException; + MethodResult resume(@Nullable Object[] args) throws LuaException; } diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaException.java b/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaException.java index c6d4371f2..aaef1cf01 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaException.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaException.java @@ -4,7 +4,8 @@ package dan200.computercraft.api.lua; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.io.Serial; /** diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaTable.java b/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaTable.java index b3a996820..006f6f51d 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaTable.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaTable.java @@ -4,7 +4,8 @@ package dan200.computercraft.api.lua; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.util.Map; import static dan200.computercraft.api.lua.LuaValues.*; diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaTask.java b/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaTask.java index c49473b07..045339014 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaTask.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaTask.java @@ -4,7 +4,7 @@ package dan200.computercraft.api.lua; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * A task which can be executed via {@link ILuaContext#issueMainThreadTask(LuaTask)} This will be run on the main @@ -24,5 +24,5 @@ public interface LuaTask { * arguments are supplied to your method. */ @Nullable - Object[] execute() throws LuaException; + Object @Nullable [] execute() throws LuaException; } diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaValues.java b/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaValues.java index ee710995a..61ec3635e 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaValues.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/lua/LuaValues.java @@ -4,7 +4,8 @@ package dan200.computercraft.api.lua; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.nio.ByteBuffer; import java.util.Map; diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/lua/MethodResult.java b/projects/core-api/src/main/java/dan200/computercraft/api/lua/MethodResult.java index 8b834f54c..b861307e3 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/lua/MethodResult.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/lua/MethodResult.java @@ -5,8 +5,8 @@ package dan200.computercraft.api.lua; import dan200.computercraft.api.peripheral.IComputerAccess; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.ByteBuffer; import java.util.*; @@ -19,17 +19,17 @@ import java.util.*; public final class MethodResult { private static final MethodResult empty = new MethodResult(null, null); - private final @Nullable Object[] result; + private final @Nullable Object @Nullable [] result; private final @Nullable ILuaCallback callback; private final int adjust; - private MethodResult(@Nullable Object[] arguments, @Nullable ILuaCallback callback) { + private MethodResult(@Nullable Object @Nullable [] arguments, @Nullable ILuaCallback callback) { result = arguments; this.callback = callback; adjust = 0; } - private MethodResult(@Nullable Object[] arguments, @Nullable ILuaCallback callback, int adjust) { + private MethodResult(@Nullable Object @Nullable [] arguments, @Nullable ILuaCallback callback, int adjust) { result = arguments; this.callback = callback; this.adjust = adjust; @@ -73,7 +73,7 @@ public final class MethodResult { * @param values The values to return. See {@link #of(Object)} for acceptable values. * @return A method result which returns immediately with the given values. */ - public static MethodResult of(@Nullable Object... values) { + public static MethodResult of(@Nullable Object @Nullable ... values) { return values == null || values.length == 0 ? empty : new MethodResult(values, null); } @@ -121,13 +121,12 @@ public final class MethodResult { * @see #pullEvent(String, ILuaCallback) */ @SuppressWarnings("NamedLikeContextualKeyword") - public static MethodResult yield(@Nullable Object[] arguments, ILuaCallback callback) { + public static MethodResult yield(@Nullable Object @Nullable [] arguments, ILuaCallback callback) { Objects.requireNonNull(callback, "callback cannot be null"); return new MethodResult(arguments, callback); } - @Nullable - public Object[] getResult() { + public @Nullable Object @Nullable [] getResult() { return result; } diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/lua/ObjectArguments.java b/projects/core-api/src/main/java/dan200/computercraft/api/lua/ObjectArguments.java index 14e36fb44..769ee6976 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/lua/ObjectArguments.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/lua/ObjectArguments.java @@ -4,7 +4,8 @@ package dan200.computercraft.api.lua; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.util.Arrays; import java.util.List; import java.util.Objects; diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/lua/ObjectLuaTable.java b/projects/core-api/src/main/java/dan200/computercraft/api/lua/ObjectLuaTable.java index db4ea75eb..5a133b742 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/lua/ObjectLuaTable.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/lua/ObjectLuaTable.java @@ -4,7 +4,8 @@ package dan200.computercraft.api.lua; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.util.Collection; import java.util.Collections; import java.util.Map; diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/lua/TaskCallback.java b/projects/core-api/src/main/java/dan200/computercraft/api/lua/TaskCallback.java index 7b1385f58..608000f68 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/lua/TaskCallback.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/lua/TaskCallback.java @@ -5,13 +5,12 @@ package dan200.computercraft.api.lua; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; final class TaskCallback implements ILuaCallback, LuaTask { private final LuaTask task; - private volatile @Nullable Object[] result; + private volatile @Nullable Object @Nullable [] result; private volatile @MonotonicNonNull LuaException failure; private final long taskId; @@ -22,9 +21,8 @@ final class TaskCallback implements ILuaCallback, LuaTask { taskId = context.issueMainThreadTask(this); } - @Nullable @Override - public Object[] execute() throws LuaException { + public @Nullable Object @Nullable [] execute() throws LuaException { // Store the result/exception: we read these back when receiving the task_complete event. try { result = task.execute(); @@ -38,7 +36,7 @@ final class TaskCallback implements ILuaCallback, LuaTask { } @Override - public MethodResult resume(Object[] response) throws LuaException { + public MethodResult resume(@Nullable Object[] response) throws LuaException { if (response.length < 3 || !(response[1] instanceof Number eventTask) || !(response[2] instanceof Boolean isOk)) { return pull; } diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/AttachedComputerSet.java b/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/AttachedComputerSet.java index 33fb31eb2..cd2caa8e1 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/AttachedComputerSet.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/AttachedComputerSet.java @@ -4,7 +4,8 @@ package dan200.computercraft.api.peripheral; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.util.HashSet; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/IComputerAccess.java b/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/IComputerAccess.java index fc56bc6a9..7268cf0e0 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/IComputerAccess.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/IComputerAccess.java @@ -10,8 +10,8 @@ import dan200.computercraft.api.lua.ILuaCallback; import dan200.computercraft.api.lua.ILuaContext; import dan200.computercraft.api.lua.LuaTask; import dan200.computercraft.api.lua.MethodResult; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Map; /** diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/IPeripheral.java b/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/IPeripheral.java index 1b80787f0..319d7c3d5 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/IPeripheral.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/IPeripheral.java @@ -7,8 +7,8 @@ package dan200.computercraft.api.peripheral; import dan200.computercraft.api.lua.ILuaContext; import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.api.lua.LuaTask; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Set; /** diff --git a/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/PeripheralType.java b/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/PeripheralType.java index e651df006..c8f1f2a01 100644 --- a/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/PeripheralType.java +++ b/projects/core-api/src/main/java/dan200/computercraft/api/peripheral/PeripheralType.java @@ -4,7 +4,8 @@ package dan200.computercraft.api.peripheral; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.util.Collection; import java.util.Set; diff --git a/projects/core/build.gradle.kts b/projects/core/build.gradle.kts index 5ae2dbe4d..bfea7628b 100644 --- a/projects/core/build.gradle.kts +++ b/projects/core/build.gradle.kts @@ -58,6 +58,8 @@ val checkChangelog by tasks.registering(cc.tweaked.gradle.CheckChangelog::class) tasks.check { dependsOn(checkChangelog) } +cct.linters(minecraft = false, loader = null) + // We configure the shadow jar to ship netty-codec and all its dependencies, relocating them under the // dan200.computercraft.core package. // This is used as part of the Forge build, so that our version of netty-codec is loaded under the GAME layer, and so diff --git a/projects/core/src/main/java/dan200/computercraft/core/ComputerContext.java b/projects/core/src/main/java/dan200/computercraft/core/ComputerContext.java index d77b21c95..ac2c182cd 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/ComputerContext.java +++ b/projects/core/src/main/java/dan200/computercraft/core/ComputerContext.java @@ -4,6 +4,7 @@ package dan200.computercraft.core; +import com.google.errorprone.annotations.CheckReturnValue; import dan200.computercraft.core.asm.GenericMethod; import dan200.computercraft.core.asm.LuaMethodSupplier; import dan200.computercraft.core.asm.PeripheralMethodSupplier; @@ -18,9 +19,8 @@ import dan200.computercraft.core.lua.MachineEnvironment; import dan200.computercraft.core.methods.LuaMethod; import dan200.computercraft.core.methods.MethodSupplier; import dan200.computercraft.core.methods.PeripheralMethod; +import org.jspecify.annotations.Nullable; -import javax.annotation.CheckReturnValue; -import javax.annotation.Nullable; import java.util.Collection; import java.util.List; import java.util.Objects; @@ -153,7 +153,7 @@ public final class ComputerContext { private final GlobalEnvironment environment; private @Nullable ComputerScheduler computerScheduler = null; private @Nullable MainThreadScheduler mainThreadScheduler; - private @Nullable ILuaMachine.Factory luaFactory; + private ILuaMachine.@Nullable Factory luaFactory; private @Nullable List genericMethods; Builder(GlobalEnvironment environment) { diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/ComputerAccess.java b/projects/core/src/main/java/dan200/computercraft/core/apis/ComputerAccess.java index 8184f3639..dede7998c 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/ComputerAccess.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/ComputerAccess.java @@ -9,10 +9,10 @@ import dan200.computercraft.api.filesystem.WritableMount; import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.WorkMonitor; import dan200.computercraft.core.filesystem.FileSystemException; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.util.HashSet; import java.util.Objects; import java.util.Set; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/FSAPI.java b/projects/core/src/main/java/dan200/computercraft/core/apis/FSAPI.java index 09c37ba9c..9988e33a9 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/FSAPI.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/FSAPI.java @@ -15,8 +15,8 @@ import dan200.computercraft.core.apis.handles.WriteHandle; import dan200.computercraft.core.filesystem.FileSystem; import dan200.computercraft.core.filesystem.FileSystemException; import dan200.computercraft.core.metrics.Metrics; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.file.OpenOption; import java.nio.file.StandardOpenOption; import java.util.*; @@ -410,9 +410,8 @@ public class FSAPI implements ILuaAPI { * print("/rom/: " .. fs.getDrive("rom")) * } */ - @Nullable @LuaFunction - public final Object[] getDrive(String path) throws LuaException { + public final Object @Nullable [] getDrive(String path) throws LuaException { try { return getFileSystem().exists(path) ? new Object[]{ getFileSystem().getMountLabel(path) } : null; } catch (FileSystemException e) { diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/FastLuaException.java b/projects/core/src/main/java/dan200/computercraft/core/apis/FastLuaException.java index efadf52c2..cca33130e 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/FastLuaException.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/FastLuaException.java @@ -5,8 +5,8 @@ package dan200.computercraft.core.apis; import dan200.computercraft.api.lua.LuaException; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.Serial; /** diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/IAPIEnvironment.java b/projects/core/src/main/java/dan200/computercraft/core/apis/IAPIEnvironment.java index 046fc3ac9..ee5fb41a3 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/IAPIEnvironment.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/IAPIEnvironment.java @@ -14,8 +14,7 @@ import dan200.computercraft.core.metrics.Metric; import dan200.computercraft.core.metrics.MetricsObserver; import dan200.computercraft.core.metrics.OperationTimer; import dan200.computercraft.core.terminal.Terminal; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public interface IAPIEnvironment { String TIMER_EVENT = "timer"; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/LuaDateTime.java b/projects/core/src/main/java/dan200/computercraft/core/apis/LuaDateTime.java index d185f4fad..ccaf6b40e 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/LuaDateTime.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/LuaDateTime.java @@ -5,8 +5,8 @@ package dan200.computercraft.core.apis; import dan200.computercraft.api.lua.LuaException; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/OSAPI.java b/projects/core/src/main/java/dan200/computercraft/core/apis/OSAPI.java index 3251004c3..477c83aac 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/OSAPI.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/OSAPI.java @@ -11,8 +11,8 @@ import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.core.util.StringUtil; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.time.Instant; import java.time.ZoneId; import java.time.ZoneOffset; @@ -245,9 +245,8 @@ public class OSAPI implements ILuaAPI { * @cc.treturn string|nil The label of the computer. * @cc.since 1.3 */ - @Nullable @LuaFunction({ "getComputerLabel", "computerLabel" }) - public final Object[] getComputerLabel() { + public final Object @Nullable [] getComputerLabel() { var label = apiEnvironment.getLabel(); return label == null ? null : new Object[]{ label }; } diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/PeripheralAPI.java b/projects/core/src/main/java/dan200/computercraft/core/apis/PeripheralAPI.java index 0b5307fcd..dd065b00f 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/PeripheralAPI.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/PeripheralAPI.java @@ -16,8 +16,8 @@ import dan200.computercraft.core.methods.MethodSupplier; import dan200.computercraft.core.methods.PeripheralMethod; import dan200.computercraft.core.metrics.Metrics; import dan200.computercraft.core.util.LuaUtil; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.*; /** @@ -268,9 +268,8 @@ public class PeripheralAPI implements ILuaAPI, IAPIEnvironment.IPeripheralChange return false; } - @Nullable @LuaFunction - public final Object[] getType(String sideName) { + public final Object @Nullable [] getType(String sideName) { var side = ComputerSide.valueOfInsensitive(sideName); if (side == null) return null; @@ -280,9 +279,8 @@ public class PeripheralAPI implements ILuaAPI, IAPIEnvironment.IPeripheralChange } } - @Nullable @LuaFunction - public final Object[] hasType(String sideName, String type) { + public final Object @Nullable [] hasType(String sideName, String type) { var side = ComputerSide.valueOfInsensitive(sideName); if (side == null) return null; @@ -295,9 +293,8 @@ public class PeripheralAPI implements ILuaAPI, IAPIEnvironment.IPeripheralChange return null; } - @Nullable @LuaFunction - public final Object[] getMethods(String sideName) { + public final Object @Nullable [] getMethods(String sideName) { var side = ComputerSide.valueOfInsensitive(sideName); if (side == null) return null; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/TableHelper.java b/projects/core/src/main/java/dan200/computercraft/core/apis/TableHelper.java index d4ed5dc9f..9ccb5f39e 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/TableHelper.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/TableHelper.java @@ -6,8 +6,8 @@ package dan200.computercraft.core.apis; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaValues; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Map; import java.util.Optional; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/handles/AbstractHandle.java b/projects/core/src/main/java/dan200/computercraft/core/apis/handles/AbstractHandle.java index b46a2b1ba..b5e39e3c0 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/handles/AbstractHandle.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/handles/AbstractHandle.java @@ -10,8 +10,8 @@ import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.core.filesystem.TrackingCloseable; import dan200.computercraft.core.util.IoUtil; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.ByteBuffer; @@ -77,8 +77,7 @@ public abstract class AbstractHandle { * @cc.treturn string The reason seeking failed. * @cc.since 1.80pr1.9 */ - @Nullable - public Object[] seek(Optional whence, Optional offset) throws LuaException { + public Object @Nullable [] seek(Optional whence, Optional offset) throws LuaException { checkOpen(); long actualOffset = offset.orElse(0L); try { @@ -111,8 +110,7 @@ public abstract class AbstractHandle { * @cc.treturn [3] string The bytes read as a string. This is returned when the {@code count} is given. * @cc.changed 1.80pr1 Now accepts an integer argument to read multiple bytes, returning a string instead of a number. */ - @Nullable - public Object[] read(Optional countArg) throws LuaException { + public Object @Nullable [] read(Optional countArg) throws LuaException { checkOpen(); try { if (binary && countArg.isEmpty()) { @@ -161,7 +159,7 @@ public abstract class AbstractHandle { var bytes = new byte[totalRead]; var pos = 0; for (var part : parts) { - int length = part.remaining(); + var length = part.remaining(); part.get(bytes, pos, length); pos += length; } @@ -182,8 +180,7 @@ public abstract class AbstractHandle { * @cc.treturn string|nil The remaining contents of the file, or {@code nil} in the event of an error. * @cc.since 1.80pr1 */ - @Nullable - public Object[] readAll() throws LuaException { + public Object @Nullable [] readAll() throws LuaException { checkOpen(); try { var expected = 32; @@ -214,8 +211,7 @@ public abstract class AbstractHandle { * @cc.since 1.80pr1.9 * @cc.changed 1.81.0 `\r` is now stripped. */ - @Nullable - public Object[] readLine(Optional withTrailingArg) throws LuaException { + public Object @Nullable [] readLine(Optional withTrailingArg) throws LuaException { checkOpen(); boolean withTrailing = withTrailingArg.orElse(false); try { diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/handles/ReadHandle.java b/projects/core/src/main/java/dan200/computercraft/core/apis/handles/ReadHandle.java index 8a7b1b3b7..e3cbb8574 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/handles/ReadHandle.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/handles/ReadHandle.java @@ -7,8 +7,8 @@ package dan200.computercraft.core.apis.handles; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.core.filesystem.TrackingCloseable; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.channels.SeekableByteChannel; import java.util.Optional; @@ -29,40 +29,36 @@ public class ReadHandle extends AbstractHandle { /** * {@inheritDoc} */ - @Nullable @Override @LuaFunction - public final Object[] read(Optional countArg) throws LuaException { + public final Object @Nullable [] read(Optional countArg) throws LuaException { return super.read(countArg); } /** * {@inheritDoc} */ - @Nullable @Override @LuaFunction - public final Object[] readAll() throws LuaException { + public final Object @Nullable [] readAll() throws LuaException { return super.readAll(); } /** * {@inheritDoc} */ - @Nullable @Override @LuaFunction - public final Object[] readLine(Optional withTrailingArg) throws LuaException { + public final Object @Nullable [] readLine(Optional withTrailingArg) throws LuaException { return super.readLine(withTrailingArg); } /** * {@inheritDoc} */ - @Nullable @Override @LuaFunction - public final Object[] seek(Optional whence, Optional offset) throws LuaException { + public final Object @Nullable [] seek(Optional whence, Optional offset) throws LuaException { return super.seek(whence, offset); } } diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/handles/ReadWriteHandle.java b/projects/core/src/main/java/dan200/computercraft/core/apis/handles/ReadWriteHandle.java index d295a3763..29a454192 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/handles/ReadWriteHandle.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/handles/ReadWriteHandle.java @@ -9,8 +9,8 @@ import dan200.computercraft.api.lua.IArguments; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.core.filesystem.TrackingCloseable; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.ByteBuffer; import java.nio.channels.SeekableByteChannel; import java.util.Optional; @@ -28,40 +28,36 @@ public class ReadWriteHandle extends AbstractHandle { /** * {@inheritDoc} */ - @Nullable @Override @LuaFunction - public final Object[] read(Optional countArg) throws LuaException { + public final Object @Nullable [] read(Optional countArg) throws LuaException { return super.read(countArg); } /** * {@inheritDoc} */ - @Nullable @Override @LuaFunction - public final Object[] readAll() throws LuaException { + public final Object @Nullable [] readAll() throws LuaException { return super.readAll(); } /** * {@inheritDoc} */ - @Nullable @Override @LuaFunction - public final Object[] readLine(Optional withTrailingArg) throws LuaException { + public final Object @Nullable [] readLine(Optional withTrailingArg) throws LuaException { return super.readLine(withTrailingArg); } /** * {@inheritDoc} */ - @Nullable @Override @LuaFunction - public final Object[] seek(Optional whence, Optional offset) throws LuaException { + public final Object @Nullable [] seek(Optional whence, Optional offset) throws LuaException { return super.seek(whence, offset); } diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/handles/WriteHandle.java b/projects/core/src/main/java/dan200/computercraft/core/apis/handles/WriteHandle.java index c91bf37ac..ad1618d9a 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/handles/WriteHandle.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/handles/WriteHandle.java @@ -9,8 +9,8 @@ import dan200.computercraft.api.lua.IArguments; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.core.filesystem.TrackingCloseable; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.ByteBuffer; import java.nio.channels.SeekableByteChannel; import java.util.Optional; @@ -64,10 +64,9 @@ public class WriteHandle extends AbstractHandle { /** * {@inheritDoc} */ - @Nullable @Override @LuaFunction - public final Object[] seek(Optional whence, Optional offset) throws LuaException { + public final Object @Nullable [] seek(Optional whence, Optional offset) throws LuaException { return super.seek(whence, offset); } } diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/http/CheckUrl.java b/projects/core/src/main/java/dan200/computercraft/core/apis/http/CheckUrl.java index 7d23b7973..addd9eaa7 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/http/CheckUrl.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/http/CheckUrl.java @@ -5,8 +5,8 @@ package dan200.computercraft.core.apis.http; import dan200.computercraft.core.apis.IAPIEnvironment; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.net.URI; import java.util.concurrent.Future; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/http/NetworkUtils.java b/projects/core/src/main/java/dan200/computercraft/core/apis/http/NetworkUtils.java index 054b5b250..594dfccfd 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/http/NetworkUtils.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/http/NetworkUtils.java @@ -27,10 +27,10 @@ import io.netty.handler.ssl.SslHandler; import io.netty.handler.timeout.ReadTimeoutException; import io.netty.handler.traffic.AbstractTrafficShapingHandler; import io.netty.handler.traffic.GlobalTrafficShapingHandler; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import javax.net.ssl.SSLException; import javax.net.ssl.SSLHandshakeException; import java.net.InetSocketAddress; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/http/Resource.java b/projects/core/src/main/java/dan200/computercraft/core/apis/http/Resource.java index c4396ff5e..e344a9fc8 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/http/Resource.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/http/Resource.java @@ -6,8 +6,8 @@ package dan200.computercraft.core.apis.http; import dan200.computercraft.core.util.IoUtil; import io.netty.channel.ChannelFuture; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.Closeable; import java.lang.ref.Reference; import java.lang.ref.ReferenceQueue; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/http/options/AddressRule.java b/projects/core/src/main/java/dan200/computercraft/core/apis/http/options/AddressRule.java index 3673e8da0..f686d594a 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/http/options/AddressRule.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/http/options/AddressRule.java @@ -8,8 +8,8 @@ import com.google.common.net.InetAddresses; import dan200.computercraft.core.apis.http.options.AddressPredicate.DomainPattern; import dan200.computercraft.core.apis.http.options.AddressPredicate.HostRange; import dan200.computercraft.core.apis.http.options.AddressPredicate.PrivatePattern; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/http/options/PartialOptions.java b/projects/core/src/main/java/dan200/computercraft/core/apis/http/options/PartialOptions.java index bd0c91c6f..2c8bd12b0 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/http/options/PartialOptions.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/http/options/PartialOptions.java @@ -6,8 +6,8 @@ package dan200.computercraft.core.apis.http.options; import com.google.errorprone.annotations.Immutable; import com.google.errorprone.annotations.concurrent.LazyInit; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Optional; import java.util.OptionalInt; import java.util.OptionalLong; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/http/request/HttpRequest.java b/projects/core/src/main/java/dan200/computercraft/core/apis/http/request/HttpRequest.java index fb28284e2..dc0b038d1 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/http/request/HttpRequest.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/http/request/HttpRequest.java @@ -20,10 +20,10 @@ import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.handler.codec.http.*; import io.netty.handler.timeout.ReadTimeoutHandler; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.net.URI; import java.net.URISyntaxException; import java.nio.ByteBuffer; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/http/request/HttpRequestHandler.java b/projects/core/src/main/java/dan200/computercraft/core/apis/http/request/HttpRequestHandler.java index 8ef3a099c..b23d6e12e 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/http/request/HttpRequestHandler.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/http/request/HttpRequestHandler.java @@ -14,8 +14,8 @@ import io.netty.buffer.CompositeByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.codec.http.*; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.Closeable; import java.net.URI; import java.net.URISyntaxException; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/http/websocket/Websocket.java b/projects/core/src/main/java/dan200/computercraft/core/apis/http/websocket/Websocket.java index 5695000ef..a4ebc4c9e 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/http/websocket/Websocket.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/http/websocket/Websocket.java @@ -25,10 +25,10 @@ import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpObjectAggregator; import io.netty.handler.codec.http.websocketx.*; import io.netty.util.concurrent.GenericFutureListener; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.net.URI; import java.nio.ByteBuffer; import java.util.concurrent.Future; diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/http/websocket/WebsocketHandle.java b/projects/core/src/main/java/dan200/computercraft/core/apis/http/websocket/WebsocketHandle.java index f5182868a..c1b704b44 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/http/websocket/WebsocketHandle.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/http/websocket/WebsocketHandle.java @@ -7,6 +7,7 @@ package dan200.computercraft.core.apis.http.websocket; import dan200.computercraft.api.lua.*; import dan200.computercraft.core.apis.IAPIEnvironment; import dan200.computercraft.core.apis.http.options.Options; +import org.jspecify.annotations.Nullable; import java.nio.ByteBuffer; import java.nio.charset.CharacterCodingException; @@ -119,7 +120,7 @@ public class WebsocketHandle { } @Override - public MethodResult resume(Object[] event) { + public MethodResult resume(@Nullable Object[] event) { if (event.length >= 3 && Objects.equals(event[0], MESSAGE_EVENT) && Objects.equals(event[1], address)) { environment.cancelTimer(timeoutId); return MethodResult.of(Arrays.copyOfRange(event, 2, event.length)); diff --git a/projects/core/src/main/java/dan200/computercraft/core/apis/transfer/TransferredFiles.java b/projects/core/src/main/java/dan200/computercraft/core/apis/transfer/TransferredFiles.java index a2afd7dd3..04e4e9306 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/apis/transfer/TransferredFiles.java +++ b/projects/core/src/main/java/dan200/computercraft/core/apis/transfer/TransferredFiles.java @@ -5,8 +5,8 @@ package dan200.computercraft.core.apis.transfer; import dan200.computercraft.api.lua.LuaFunction; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; diff --git a/projects/core/src/main/java/dan200/computercraft/core/asm/Generator.java b/projects/core/src/main/java/dan200/computercraft/core/asm/Generator.java index 3272b3bc2..e31cac71e 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/asm/Generator.java +++ b/projects/core/src/main/java/dan200/computercraft/core/asm/Generator.java @@ -11,10 +11,10 @@ import com.google.common.primitives.Primitives; import com.google.common.reflect.TypeToken; import dan200.computercraft.api.lua.*; import dan200.computercraft.core.methods.LuaMethod; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; diff --git a/projects/core/src/main/java/dan200/computercraft/core/asm/GenericMethod.java b/projects/core/src/main/java/dan200/computercraft/core/asm/GenericMethod.java index 1681c4ed2..ef3f70ce2 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/asm/GenericMethod.java +++ b/projects/core/src/main/java/dan200/computercraft/core/asm/GenericMethod.java @@ -8,10 +8,10 @@ import dan200.computercraft.api.lua.GenericSource; import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.api.peripheral.GenericPeripheral; import dan200.computercraft.api.peripheral.PeripheralType; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.lang.reflect.Method; import java.util.Arrays; import java.util.Objects; diff --git a/projects/core/src/main/java/dan200/computercraft/core/asm/MethodSupplierImpl.java b/projects/core/src/main/java/dan200/computercraft/core/asm/MethodSupplierImpl.java index 92a2cb700..aa773ddde 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/asm/MethodSupplierImpl.java +++ b/projects/core/src/main/java/dan200/computercraft/core/asm/MethodSupplierImpl.java @@ -11,10 +11,10 @@ import dan200.computercraft.core.methods.MethodSupplier; import dan200.computercraft.core.methods.NamedMethod; import dan200.computercraft.core.methods.ObjectSource; import org.jetbrains.annotations.VisibleForTesting; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; diff --git a/projects/core/src/main/java/dan200/computercraft/core/asm/Reflect.java b/projects/core/src/main/java/dan200/computercraft/core/asm/Reflect.java index 7c14a578c..f66dead23 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/asm/Reflect.java +++ b/projects/core/src/main/java/dan200/computercraft/core/asm/Reflect.java @@ -5,10 +5,10 @@ package dan200.computercraft.core.asm; import dan200.computercraft.api.lua.Coerced; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.lang.reflect.*; import java.util.Optional; diff --git a/projects/core/src/main/java/dan200/computercraft/core/asm/ResultHelpers.java b/projects/core/src/main/java/dan200/computercraft/core/asm/ResultHelpers.java index ef2e55a80..c8de48bf5 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/asm/ResultHelpers.java +++ b/projects/core/src/main/java/dan200/computercraft/core/asm/ResultHelpers.java @@ -5,15 +5,13 @@ package dan200.computercraft.core.asm; import dan200.computercraft.api.lua.MethodResult; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; final class ResultHelpers { private ResultHelpers() { } - @Nullable - static Object[] checkNormalResult(MethodResult result) { + static @Nullable Object @Nullable [] checkNormalResult(MethodResult result) { if (result.getCallback() != null) { // Due to how tasks are implemented, we can't currently return a MethodResult. This is an // entirely artificial limitation - we can remove it if it ever becomes an issue. diff --git a/projects/core/src/main/java/dan200/computercraft/core/computer/ApiWrapper.java b/projects/core/src/main/java/dan200/computercraft/core/computer/ApiWrapper.java index 94394724a..ea4a3fdaf 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/computer/ApiWrapper.java +++ b/projects/core/src/main/java/dan200/computercraft/core/computer/ApiWrapper.java @@ -5,8 +5,7 @@ package dan200.computercraft.core.computer; import dan200.computercraft.api.lua.ILuaAPI; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * A wrapper for {@link ILuaAPI}s which provides an optional shutdown hook to clean up resources. @@ -28,8 +27,4 @@ record ApiWrapper(ILuaAPI api, @Nullable ApiLifecycle lifecycle) { api.shutdown(); if (lifecycle != null) lifecycle.shutdown(); } - - public ILuaAPI api() { - return api; - } } diff --git a/projects/core/src/main/java/dan200/computercraft/core/computer/Computer.java b/projects/core/src/main/java/dan200/computercraft/core/computer/Computer.java index bab208506..5973d0444 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/computer/Computer.java +++ b/projects/core/src/main/java/dan200/computercraft/core/computer/Computer.java @@ -14,8 +14,8 @@ import dan200.computercraft.core.computer.mainthread.MainThreadScheduler; import dan200.computercraft.core.filesystem.FileSystem; import dan200.computercraft.core.redstone.RedstoneState; import dan200.computercraft.core.terminal.Terminal; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.concurrent.atomic.AtomicLong; /** @@ -115,7 +115,7 @@ public class Computer implements ComputerEvents.Receiver { } @Override - public void queueEvent(String event, @Nullable Object[] args) { + public void queueEvent(String event, @Nullable Object @Nullable [] args) { executor.queueEvent(event, args); } diff --git a/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerEnvironment.java b/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerEnvironment.java index a9984aa1f..06fad0f90 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerEnvironment.java +++ b/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerEnvironment.java @@ -7,8 +7,7 @@ package dan200.computercraft.core.computer; import dan200.computercraft.api.filesystem.WritableMount; import dan200.computercraft.core.filesystem.WritableFileMount; import dan200.computercraft.core.metrics.MetricsObserver; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public interface ComputerEnvironment { /** diff --git a/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerEvents.java b/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerEvents.java index f3ed14372..678607cb1 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerEvents.java +++ b/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerEvents.java @@ -5,8 +5,8 @@ package dan200.computercraft.core.computer; import dan200.computercraft.core.util.StringUtil; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.ByteBuffer; /** @@ -67,6 +67,6 @@ public final class ComputerEvents { */ @FunctionalInterface public interface Receiver { - void queueEvent(String event, @Nullable Object[] arguments); + void queueEvent(String event, @Nullable Object @Nullable [] arguments); } } diff --git a/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerExecutor.java b/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerExecutor.java index d9db83472..55d57ab39 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerExecutor.java +++ b/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerExecutor.java @@ -4,6 +4,7 @@ package dan200.computercraft.core.computer; +import com.google.errorprone.annotations.concurrent.GuardedBy; import dan200.computercraft.api.filesystem.Mount; import dan200.computercraft.api.filesystem.WritableMount; import dan200.computercraft.api.lua.ILuaAPI; @@ -22,11 +23,10 @@ import dan200.computercraft.core.methods.MethodSupplier; import dan200.computercraft.core.metrics.MetricsObserver; import dan200.computercraft.core.util.Colour; import dan200.computercraft.core.util.Nullability; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; -import javax.annotation.concurrent.GuardedBy; import java.io.IOException; import java.io.InputStream; import java.util.ArrayDeque; @@ -266,7 +266,7 @@ final class ComputerExecutor implements ComputerScheduler.Worker { * @param event The event's name * @param args The event's arguments */ - void queueEvent(String event, @Nullable Object[] args) { + void queueEvent(String event, @Nullable Object @Nullable [] args) { // Events should be skipped if we're not on. if (!isOn) return; @@ -552,7 +552,7 @@ final class ComputerExecutor implements ComputerScheduler.Worker { terminal.write("ComputerCraft may be installed incorrectly"); } - private void resumeMachine(@Nullable String event, @Nullable Object[] args) throws InterruptedException { + private void resumeMachine(@Nullable String event, @Nullable Object @Nullable [] args) throws InterruptedException { var result = Nullability.assertNonNull(machine).handleEvent(event, args); if (result.isError()) { displayFailure("Error running computer", result.getMessage()); @@ -573,6 +573,7 @@ final class ComputerExecutor implements ComputerScheduler.Worker { ABORT_WITH_ERROR, } - private record Event(String name, @Nullable Object[] args) { + @SuppressWarnings("ArrayRecordComponent") + private record Event(String name, @Nullable Object @Nullable [] args) { } } diff --git a/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerSide.java b/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerSide.java index c35016080..439f7359f 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerSide.java +++ b/projects/core/src/main/java/dan200/computercraft/core/computer/ComputerSide.java @@ -4,7 +4,8 @@ package dan200.computercraft.core.computer; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.util.List; /** diff --git a/projects/core/src/main/java/dan200/computercraft/core/computer/Environment.java b/projects/core/src/main/java/dan200/computercraft/core/computer/Environment.java index d1e10d5c4..a87903e41 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/computer/Environment.java +++ b/projects/core/src/main/java/dan200/computercraft/core/computer/Environment.java @@ -14,8 +14,8 @@ import dan200.computercraft.core.terminal.Terminal; import dan200.computercraft.core.util.PeripheralHelpers; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Iterator; /** diff --git a/projects/core/src/main/java/dan200/computercraft/core/computer/GlobalEnvironment.java b/projects/core/src/main/java/dan200/computercraft/core/computer/GlobalEnvironment.java index 36b018cd0..9051da12f 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/computer/GlobalEnvironment.java +++ b/projects/core/src/main/java/dan200/computercraft/core/computer/GlobalEnvironment.java @@ -5,8 +5,8 @@ package dan200.computercraft.core.computer; import dan200.computercraft.api.filesystem.Mount; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.InputStream; /** diff --git a/projects/core/src/main/java/dan200/computercraft/core/computer/computerthread/ComputerThread.java b/projects/core/src/main/java/dan200/computercraft/core/computer/computerthread/ComputerThread.java index 5866628da..67672bc54 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/computer/computerthread/ComputerThread.java +++ b/projects/core/src/main/java/dan200/computercraft/core/computer/computerthread/ComputerThread.java @@ -6,6 +6,7 @@ package dan200.computercraft.core.computer.computerthread; import com.google.common.annotations.VisibleForTesting; import com.google.errorprone.annotations.Keep; +import com.google.errorprone.annotations.concurrent.GuardedBy; import dan200.computercraft.core.ComputerContext; import dan200.computercraft.core.Logging; import dan200.computercraft.core.computer.TimeoutState; @@ -13,11 +14,10 @@ import dan200.computercraft.core.metrics.Metrics; import dan200.computercraft.core.metrics.MetricsObserver; import dan200.computercraft.core.metrics.ThreadAllocations; import dan200.computercraft.core.util.ThreadUtils; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; -import javax.annotation.concurrent.GuardedBy; import java.util.Arrays; import java.util.Objects; import java.util.TreeSet; @@ -242,7 +242,7 @@ public final class ComputerThread implements ComputerScheduler { // Encourage any currently running runners to terminate. threadLock.lock(); try { - for (@Nullable var worker : workers) { + for (var worker : workers) { if (worker == null) continue; var executor = worker.currentExecutor.get(); @@ -349,7 +349,7 @@ public final class ComputerThread implements ComputerScheduler { // Update all the currently executing tasks var now = System.nanoTime(); var tasks = 1 + computerQueue.size(); - for (@Nullable var runner : workersReadOnly()) { + for (var runner : workersReadOnly()) { if (runner == null) continue; var executor = runner.currentExecutor.get(); if (executor == null) continue; diff --git a/projects/core/src/main/java/dan200/computercraft/core/filesystem/AbstractInMemoryMount.java b/projects/core/src/main/java/dan200/computercraft/core/filesystem/AbstractInMemoryMount.java index 188628a3b..361cbb735 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/filesystem/AbstractInMemoryMount.java +++ b/projects/core/src/main/java/dan200/computercraft/core/filesystem/AbstractInMemoryMount.java @@ -7,8 +7,8 @@ package dan200.computercraft.core.filesystem; import dan200.computercraft.api.filesystem.FileAttributes; import dan200.computercraft.api.filesystem.FileOperationException; import dan200.computercraft.api.filesystem.Mount; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.IOException; import java.nio.channels.SeekableByteChannel; import java.nio.file.attribute.BasicFileAttributes; diff --git a/projects/core/src/main/java/dan200/computercraft/core/filesystem/ArchiveMount.java b/projects/core/src/main/java/dan200/computercraft/core/filesystem/ArchiveMount.java index bac283ad9..388cc10de 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/filesystem/ArchiveMount.java +++ b/projects/core/src/main/java/dan200/computercraft/core/filesystem/ArchiveMount.java @@ -7,8 +7,8 @@ package dan200.computercraft.core.filesystem; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import dan200.computercraft.core.apis.handles.ArrayByteChannel; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.IOException; import java.nio.channels.SeekableByteChannel; import java.util.concurrent.TimeUnit; diff --git a/projects/core/src/main/java/dan200/computercraft/core/filesystem/JarMount.java b/projects/core/src/main/java/dan200/computercraft/core/filesystem/JarMount.java index 635c1a076..fc4cd1d93 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/filesystem/JarMount.java +++ b/projects/core/src/main/java/dan200/computercraft/core/filesystem/JarMount.java @@ -6,8 +6,8 @@ package dan200.computercraft.core.filesystem; import dan200.computercraft.api.filesystem.FileAttributes; import dan200.computercraft.api.filesystem.FileOperationException; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.Closeable; import java.io.File; import java.io.FileNotFoundException; diff --git a/projects/core/src/main/java/dan200/computercraft/core/filesystem/MemoryMount.java b/projects/core/src/main/java/dan200/computercraft/core/filesystem/MemoryMount.java index 2db0154b6..1bacb72c4 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/filesystem/MemoryMount.java +++ b/projects/core/src/main/java/dan200/computercraft/core/filesystem/MemoryMount.java @@ -9,8 +9,8 @@ import dan200.computercraft.api.filesystem.FileOperationException; import dan200.computercraft.api.filesystem.Mount; import dan200.computercraft.api.filesystem.WritableMount; import dan200.computercraft.core.util.Nullability; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.ClosedChannelException; @@ -220,8 +220,7 @@ public final class MemoryMount extends AbstractInMemoryMount { FileTime created = EPOCH; FileTime modified = EPOCH; - @Nullable - byte[] contents; + byte @Nullable [] contents; int length; diff --git a/projects/core/src/main/java/dan200/computercraft/core/filesystem/MountWrapper.java b/projects/core/src/main/java/dan200/computercraft/core/filesystem/MountWrapper.java index 10d9243e2..a77c3af18 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/filesystem/MountWrapper.java +++ b/projects/core/src/main/java/dan200/computercraft/core/filesystem/MountWrapper.java @@ -7,8 +7,8 @@ package dan200.computercraft.core.filesystem; import dan200.computercraft.api.filesystem.FileOperationException; import dan200.computercraft.api.filesystem.Mount; import dan200.computercraft.api.filesystem.WritableMount; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.IOException; import java.nio.channels.SeekableByteChannel; import java.nio.file.OpenOption; diff --git a/projects/core/src/main/java/dan200/computercraft/core/filesystem/WritableFileMount.java b/projects/core/src/main/java/dan200/computercraft/core/filesystem/WritableFileMount.java index 390e7899e..8086196b7 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/filesystem/WritableFileMount.java +++ b/projects/core/src/main/java/dan200/computercraft/core/filesystem/WritableFileMount.java @@ -6,10 +6,10 @@ package dan200.computercraft.core.filesystem; import dan200.computercraft.api.filesystem.FileOperationException; import dan200.computercraft.api.filesystem.WritableMount; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; diff --git a/projects/core/src/main/java/dan200/computercraft/core/lua/CobaltLuaMachine.java b/projects/core/src/main/java/dan200/computercraft/core/lua/CobaltLuaMachine.java index 0bc3c4856..527bf03bc 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/lua/CobaltLuaMachine.java +++ b/projects/core/src/main/java/dan200/computercraft/core/lua/CobaltLuaMachine.java @@ -17,6 +17,7 @@ import dan200.computercraft.core.methods.MethodSupplier; import dan200.computercraft.core.util.LuaUtil; import dan200.computercraft.core.util.Nullability; import dan200.computercraft.core.util.SanitisedError; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.squiddev.cobalt.*; @@ -26,7 +27,6 @@ import org.squiddev.cobalt.interrupt.InterruptAction; import org.squiddev.cobalt.lib.Bit32Lib; import org.squiddev.cobalt.lib.CoreLibraries; -import javax.annotation.Nullable; import java.io.InputStream; import java.io.Serial; import java.nio.ByteBuffer; @@ -114,7 +114,7 @@ public class CobaltLuaMachine implements ILuaMachine { } @Override - public MachineResult handleEvent(@Nullable String eventName, @Nullable Object[] arguments) { + public MachineResult handleEvent(@Nullable String eventName, @Nullable Object @Nullable [] arguments) { if (isDisposed) throw new IllegalStateException("Machine has been closed"); if (eventFilter != null && eventName != null && !eventName.equals(eventFilter) && !eventName.equals("terminate")) { @@ -253,7 +253,7 @@ public class CobaltLuaMachine implements ILuaMachine { return Constants.NIL; } - Varargs toValues(@Nullable Object[] objects) throws LuaError { + Varargs toValues(@Nullable Object @Nullable [] objects) throws LuaError { if (objects == null || objects.length == 0) return Constants.NONE; if (objects.length == 1) return toValue(objects[0], null); @@ -266,8 +266,7 @@ public class CobaltLuaMachine implements ILuaMachine { return ValueFactory.varargsOf(values); } - @Nullable - static Object toObject(LuaValue value, @Nullable IdentityHashMap objects) { + static @Nullable Object toObject(LuaValue value, @Nullable IdentityHashMap objects) { return switch (value.type()) { case Constants.TNIL -> null; case Constants.TINT, Constants.TNUMBER -> value.toDouble(); @@ -312,7 +311,7 @@ public class CobaltLuaMachine implements ILuaMachine { }; } - static Object[] toObjects(Varargs values) { + static @Nullable Object[] toObjects(Varargs values) { var count = values.count(); var objects = new Object[count]; for (var i = 0; i < count; i++) objects[i] = toObject(values.arg(i + 1), null); diff --git a/projects/core/src/main/java/dan200/computercraft/core/lua/ILuaMachine.java b/projects/core/src/main/java/dan200/computercraft/core/lua/ILuaMachine.java index 1c939d997..8ff30d6d0 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/lua/ILuaMachine.java +++ b/projects/core/src/main/java/dan200/computercraft/core/lua/ILuaMachine.java @@ -4,7 +4,8 @@ package dan200.computercraft.core.lua; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.io.IOException; import java.io.InputStream; @@ -28,7 +29,7 @@ public interface ILuaMachine { * @return The result of loading this machine. Will either be OK, or the error message that occurred when * executing. */ - MachineResult handleEvent(@Nullable String eventName, @Nullable Object[] arguments); + MachineResult handleEvent(@Nullable String eventName, @Nullable Object @Nullable [] arguments); /** * Print some information about the internal execution state. diff --git a/projects/core/src/main/java/dan200/computercraft/core/lua/MachineResult.java b/projects/core/src/main/java/dan200/computercraft/core/lua/MachineResult.java index a7e481fbc..731b5295a 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/lua/MachineResult.java +++ b/projects/core/src/main/java/dan200/computercraft/core/lua/MachineResult.java @@ -5,8 +5,7 @@ package dan200.computercraft.core.lua; import dan200.computercraft.core.computer.TimeoutState; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * The result of executing an action on a machine. diff --git a/projects/core/src/main/java/dan200/computercraft/core/lua/TableImpl.java b/projects/core/src/main/java/dan200/computercraft/core/lua/TableImpl.java index 0ffa65d76..d764db045 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/lua/TableImpl.java +++ b/projects/core/src/main/java/dan200/computercraft/core/lua/TableImpl.java @@ -6,9 +6,9 @@ package dan200.computercraft.core.lua; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaValues; +import org.jspecify.annotations.Nullable; import org.squiddev.cobalt.*; -import javax.annotation.Nullable; import java.util.*; import static dan200.computercraft.api.lua.LuaValues.badTableItem; diff --git a/projects/core/src/main/java/dan200/computercraft/core/lua/VarargArguments.java b/projects/core/src/main/java/dan200/computercraft/core/lua/VarargArguments.java index f8ecee139..ed75df732 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/lua/VarargArguments.java +++ b/projects/core/src/main/java/dan200/computercraft/core/lua/VarargArguments.java @@ -7,11 +7,11 @@ package dan200.computercraft.core.lua; import dan200.computercraft.api.lua.IArguments; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaValues; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.squiddev.cobalt.*; -import javax.annotation.Nullable; import java.nio.ByteBuffer; import java.util.Optional; diff --git a/projects/core/src/main/java/dan200/computercraft/core/lua/errorinfo/ErrorInfoLib.java b/projects/core/src/main/java/dan200/computercraft/core/lua/errorinfo/ErrorInfoLib.java index 5f23941f5..3f03f31c2 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/lua/errorinfo/ErrorInfoLib.java +++ b/projects/core/src/main/java/dan200/computercraft/core/lua/errorinfo/ErrorInfoLib.java @@ -5,12 +5,12 @@ package dan200.computercraft.core.lua.errorinfo; import com.google.common.annotations.VisibleForTesting; +import org.jspecify.annotations.Nullable; import org.squiddev.cobalt.*; import org.squiddev.cobalt.debug.DebugFrame; import org.squiddev.cobalt.function.LuaFunction; import org.squiddev.cobalt.function.RegisteredFunction; -import javax.annotation.Nullable; import java.util.Objects; import static org.squiddev.cobalt.Lua.*; diff --git a/projects/core/src/main/java/dan200/computercraft/core/methods/MethodSupplier.java b/projects/core/src/main/java/dan200/computercraft/core/methods/MethodSupplier.java index 13f45b915..701148829 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/methods/MethodSupplier.java +++ b/projects/core/src/main/java/dan200/computercraft/core/methods/MethodSupplier.java @@ -4,7 +4,8 @@ package dan200.computercraft.core.methods; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.util.HashMap; import java.util.Map; diff --git a/projects/core/src/main/java/dan200/computercraft/core/methods/NamedMethod.java b/projects/core/src/main/java/dan200/computercraft/core/methods/NamedMethod.java index f4f5de441..a848b36d4 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/methods/NamedMethod.java +++ b/projects/core/src/main/java/dan200/computercraft/core/methods/NamedMethod.java @@ -8,8 +8,7 @@ import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.api.lua.MethodResult; import dan200.computercraft.api.peripheral.GenericPeripheral; import dan200.computercraft.api.peripheral.PeripheralType; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * A method generated from a {@link LuaFunction}. diff --git a/projects/core/src/main/java/dan200/computercraft/core/metrics/ThreadAllocations.java b/projects/core/src/main/java/dan200/computercraft/core/metrics/ThreadAllocations.java index 940c0d232..953a832db 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/metrics/ThreadAllocations.java +++ b/projects/core/src/main/java/dan200/computercraft/core/metrics/ThreadAllocations.java @@ -4,10 +4,10 @@ package dan200.computercraft.core.metrics; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; diff --git a/projects/core/src/main/java/dan200/computercraft/core/redstone/RedstoneState.java b/projects/core/src/main/java/dan200/computercraft/core/redstone/RedstoneState.java index e2a6f0d9f..5de2e9b8a 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/redstone/RedstoneState.java +++ b/projects/core/src/main/java/dan200/computercraft/core/redstone/RedstoneState.java @@ -3,10 +3,10 @@ // SPDX-License-Identifier: LicenseRef-CCPL package dan200.computercraft.core.redstone; +import com.google.errorprone.annotations.concurrent.GuardedBy; import dan200.computercraft.core.computer.ComputerSide; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; -import javax.annotation.concurrent.GuardedBy; import java.util.Arrays; import java.util.concurrent.locks.ReentrantLock; diff --git a/projects/core/src/main/java/dan200/computercraft/core/terminal/Terminal.java b/projects/core/src/main/java/dan200/computercraft/core/terminal/Terminal.java index 983a277e0..0e3a87def 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/terminal/Terminal.java +++ b/projects/core/src/main/java/dan200/computercraft/core/terminal/Terminal.java @@ -5,8 +5,8 @@ package dan200.computercraft.core.terminal; import dan200.computercraft.core.util.Colour; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.ByteBuffer; public class Terminal { diff --git a/projects/core/src/main/java/dan200/computercraft/core/util/IoUtil.java b/projects/core/src/main/java/dan200/computercraft/core/util/IoUtil.java index dc5e18e67..896b18503 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/util/IoUtil.java +++ b/projects/core/src/main/java/dan200/computercraft/core/util/IoUtil.java @@ -4,7 +4,8 @@ package dan200.computercraft.core.util; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.io.Closeable; import java.io.IOException; diff --git a/projects/core/src/main/java/dan200/computercraft/core/util/Nullability.java b/projects/core/src/main/java/dan200/computercraft/core/util/Nullability.java index 10b4e90fc..95383948d 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/util/Nullability.java +++ b/projects/core/src/main/java/dan200/computercraft/core/util/Nullability.java @@ -4,7 +4,7 @@ package dan200.computercraft.core.util; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public final class Nullability { private Nullability() { diff --git a/projects/core/src/main/java/dan200/computercraft/core/util/PeripheralHelpers.java b/projects/core/src/main/java/dan200/computercraft/core/util/PeripheralHelpers.java index 6ac48da4e..f304eafc3 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/util/PeripheralHelpers.java +++ b/projects/core/src/main/java/dan200/computercraft/core/util/PeripheralHelpers.java @@ -5,8 +5,7 @@ package dan200.computercraft.core.util; import dan200.computercraft.api.peripheral.IPeripheral; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Utilities for working with {@linkplain IPeripheral peripherals}. diff --git a/projects/core/src/test/java/dan200/computercraft/core/ComputerTestDelegate.java b/projects/core/src/test/java/dan200/computercraft/core/ComputerTestDelegate.java index 319057a84..43d61eafa 100644 --- a/projects/core/src/test/java/dan200/computercraft/core/ComputerTestDelegate.java +++ b/projects/core/src/test/java/dan200/computercraft/core/ComputerTestDelegate.java @@ -21,6 +21,7 @@ import dan200.computercraft.core.lua.MachineException; import dan200.computercraft.core.terminal.Terminal; import dan200.computercraft.test.core.computer.BasicEnvironment; import it.unimi.dsi.fastutil.ints.Int2IntArrayMap; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.*; import org.junit.jupiter.api.function.Executable; import org.opentest4j.AssertionFailedError; @@ -34,7 +35,6 @@ import org.squiddev.cobalt.debug.DebugFrame; import org.squiddev.cobalt.debug.DebugHook; import org.squiddev.cobalt.debug.DebugState; -import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.io.InputStream; diff --git a/projects/core/src/test/java/dan200/computercraft/core/apis/handles/BinaryReadableHandleTest.java b/projects/core/src/test/java/dan200/computercraft/core/apis/handles/BinaryReadableHandleTest.java index 465847b20..3aae43988 100644 --- a/projects/core/src/test/java/dan200/computercraft/core/apis/handles/BinaryReadableHandleTest.java +++ b/projects/core/src/test/java/dan200/computercraft/core/apis/handles/BinaryReadableHandleTest.java @@ -5,9 +5,9 @@ package dan200.computercraft.core.apis.handles; import dan200.computercraft.api.lua.LuaException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; -import javax.annotation.Nullable; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.Arrays; diff --git a/projects/core/src/test/java/dan200/computercraft/core/asm/MethodTest.java b/projects/core/src/test/java/dan200/computercraft/core/asm/MethodTest.java index 5dc674a98..98326a587 100644 --- a/projects/core/src/test/java/dan200/computercraft/core/asm/MethodTest.java +++ b/projects/core/src/test/java/dan200/computercraft/core/asm/MethodTest.java @@ -11,9 +11,9 @@ import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.core.computer.ComputerBootstrap; import dan200.computercraft.core.computer.ComputerSide; import dan200.computercraft.core.methods.ObjectSource; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; -import javax.annotation.Nullable; import java.util.List; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/projects/core/src/test/java/dan200/computercraft/core/computer/computerthread/ComputerThreadRunner.java b/projects/core/src/test/java/dan200/computercraft/core/computer/computerthread/ComputerThreadRunner.java index 6a76d929a..002b95074 100644 --- a/projects/core/src/test/java/dan200/computercraft/core/computer/computerthread/ComputerThreadRunner.java +++ b/projects/core/src/test/java/dan200/computercraft/core/computer/computerthread/ComputerThreadRunner.java @@ -4,12 +4,12 @@ package dan200.computercraft.core.computer.computerthread; +import com.google.errorprone.annotations.concurrent.GuardedBy; import dan200.computercraft.core.computer.TimeoutState; import dan200.computercraft.core.metrics.Metric; import dan200.computercraft.core.metrics.MetricsObserver; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; -import javax.annotation.concurrent.GuardedBy; import java.util.Arrays; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; diff --git a/projects/core/src/testFixtures/java/dan200/computercraft/test/core/ArbitraryByteBuffer.java b/projects/core/src/testFixtures/java/dan200/computercraft/test/core/ArbitraryByteBuffer.java index 2866e4206..fe3cdf963 100644 --- a/projects/core/src/testFixtures/java/dan200/computercraft/test/core/ArbitraryByteBuffer.java +++ b/projects/core/src/testFixtures/java/dan200/computercraft/test/core/ArbitraryByteBuffer.java @@ -6,8 +6,8 @@ package dan200.computercraft.test.core; import net.jqwik.api.*; import net.jqwik.api.arbitraries.SizableArbitrary; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.math.BigInteger; import java.nio.ByteBuffer; import java.util.List; diff --git a/projects/core/src/testFixtures/java/dan200/computercraft/test/core/CloseScope.java b/projects/core/src/testFixtures/java/dan200/computercraft/test/core/CloseScope.java index 0b4d5b3d5..391596193 100644 --- a/projects/core/src/testFixtures/java/dan200/computercraft/test/core/CloseScope.java +++ b/projects/core/src/testFixtures/java/dan200/computercraft/test/core/CloseScope.java @@ -4,7 +4,8 @@ package dan200.computercraft.test.core; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; + import java.util.ArrayDeque; import java.util.Deque; import java.util.Objects; diff --git a/projects/core/src/testFixtures/java/dan200/computercraft/test/core/StructuralEqualities.java b/projects/core/src/testFixtures/java/dan200/computercraft/test/core/StructuralEqualities.java index 9517cc526..b5e2e0053 100644 --- a/projects/core/src/testFixtures/java/dan200/computercraft/test/core/StructuralEqualities.java +++ b/projects/core/src/testFixtures/java/dan200/computercraft/test/core/StructuralEqualities.java @@ -6,8 +6,8 @@ package dan200.computercraft.test.core; import org.hamcrest.Description; import org.hamcrest.TypeSafeMatcher; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; import java.util.Objects; import java.util.function.Function; diff --git a/projects/core/src/testFixtures/java/dan200/computercraft/test/core/apis/BasicApiEnvironment.java b/projects/core/src/testFixtures/java/dan200/computercraft/test/core/apis/BasicApiEnvironment.java index dd75d2a32..f82b50468 100644 --- a/projects/core/src/testFixtures/java/dan200/computercraft/test/core/apis/BasicApiEnvironment.java +++ b/projects/core/src/testFixtures/java/dan200/computercraft/test/core/apis/BasicApiEnvironment.java @@ -14,8 +14,7 @@ import dan200.computercraft.core.filesystem.FileSystem; import dan200.computercraft.core.metrics.MetricsObserver; import dan200.computercraft.core.terminal.Terminal; import dan200.computercraft.test.core.computer.BasicEnvironment; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public abstract class BasicApiEnvironment implements IAPIEnvironment { private final BasicEnvironment environment; diff --git a/projects/core/src/testFixtures/kotlin/dan200/computercraft/test/core/computer/KotlinLuaMachine.kt b/projects/core/src/testFixtures/kotlin/dan200/computercraft/test/core/computer/KotlinLuaMachine.kt index 1c3e193e4..cf15cdf63 100644 --- a/projects/core/src/testFixtures/kotlin/dan200/computercraft/test/core/computer/KotlinLuaMachine.kt +++ b/projects/core/src/testFixtures/kotlin/dan200/computercraft/test/core/computer/KotlinLuaMachine.kt @@ -21,7 +21,7 @@ abstract class KotlinLuaMachine(environment: MachineEnvironment) : ILuaMachine, for (api in environment.apis) addApi(api) } - override fun handleEvent(eventName: String?, arguments: Array?): MachineResult { + override fun handleEvent(eventName: String?, arguments: Array?): MachineResult { if (hasEventListeners) { queueEvent(eventName, arguments) } else { diff --git a/projects/fabric/src/client/java/dan200/computercraft/client/model/CompositeBakedModel.java b/projects/fabric/src/client/java/dan200/computercraft/client/model/CompositeBakedModel.java index 00880515a..608829f71 100644 --- a/projects/fabric/src/client/java/dan200/computercraft/client/model/CompositeBakedModel.java +++ b/projects/fabric/src/client/java/dan200/computercraft/client/model/CompositeBakedModel.java @@ -15,8 +15,8 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.*; import java.util.function.Supplier; import java.util.stream.Stream; diff --git a/projects/fabric/src/client/java/dan200/computercraft/client/model/CustomModelLoader.java b/projects/fabric/src/client/java/dan200/computercraft/client/model/CustomModelLoader.java index bc2c28650..aec192103 100644 --- a/projects/fabric/src/client/java/dan200/computercraft/client/model/CustomModelLoader.java +++ b/projects/fabric/src/client/java/dan200/computercraft/client/model/CustomModelLoader.java @@ -19,10 +19,10 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.GsonHelper; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.io.IOException; import java.io.Reader; import java.util.HashMap; diff --git a/projects/fabric/src/client/java/dan200/computercraft/client/model/EmissiveBakedModel.java b/projects/fabric/src/client/java/dan200/computercraft/client/model/EmissiveBakedModel.java index 3512eb896..4d3d18ea9 100644 --- a/projects/fabric/src/client/java/dan200/computercraft/client/model/EmissiveBakedModel.java +++ b/projects/fabric/src/client/java/dan200/computercraft/client/model/EmissiveBakedModel.java @@ -16,8 +16,8 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.function.Supplier; /** diff --git a/projects/fabric/src/client/java/dan200/computercraft/client/model/FoiledModel.java b/projects/fabric/src/client/java/dan200/computercraft/client/model/FoiledModel.java index a0995211a..34313ebb5 100644 --- a/projects/fabric/src/client/java/dan200/computercraft/client/model/FoiledModel.java +++ b/projects/fabric/src/client/java/dan200/computercraft/client/model/FoiledModel.java @@ -18,8 +18,8 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.function.Supplier; /** diff --git a/projects/fabric/src/client/java/dan200/computercraft/client/model/TransformedBakedModel.java b/projects/fabric/src/client/java/dan200/computercraft/client/model/TransformedBakedModel.java index 79f0dc03f..ac614c01c 100644 --- a/projects/fabric/src/client/java/dan200/computercraft/client/model/TransformedBakedModel.java +++ b/projects/fabric/src/client/java/dan200/computercraft/client/model/TransformedBakedModel.java @@ -16,8 +16,8 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; import java.util.function.Supplier; diff --git a/projects/fabric/src/client/java/dan200/computercraft/client/model/turtle/TurtleModel.java b/projects/fabric/src/client/java/dan200/computercraft/client/model/turtle/TurtleModel.java index 704350b1a..dc83ddde5 100644 --- a/projects/fabric/src/client/java/dan200/computercraft/client/model/turtle/TurtleModel.java +++ b/projects/fabric/src/client/java/dan200/computercraft/client/model/turtle/TurtleModel.java @@ -12,8 +12,7 @@ import net.minecraft.client.renderer.block.model.ItemOverrides; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * The custom model for turtle items, which renders tools and overlays as part of the model. diff --git a/projects/fabric/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelperImpl.java b/projects/fabric/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelperImpl.java index 8452d9e58..b8aebca17 100644 --- a/projects/fabric/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelperImpl.java +++ b/projects/fabric/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelperImpl.java @@ -26,8 +26,7 @@ import net.minecraft.network.protocol.game.ServerGamePacketListener; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraft.util.RandomSource; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; @AutoService(dan200.computercraft.impl.client.ClientPlatformHelper.class) public class ClientPlatformHelperImpl implements ClientPlatformHelper { @@ -52,7 +51,7 @@ public class ClientPlatformHelperImpl implements ClientPlatformHelper { } @Override - public void renderBakedModel(PoseStack transform, MultiBufferSource buffers, BakedModel model, int lightmapCoord, int overlayLight, @Nullable int[] tints) { + public void renderBakedModel(PoseStack transform, MultiBufferSource buffers, BakedModel model, int lightmapCoord, int overlayLight, int @Nullable [] tints) { // Unfortunately we can't call Fabric's emitItemQuads here, as there's no way to obtain a RenderContext via the // API. Instead, we special case our FoiledModel, and just render everything else normally. var buffer = ItemRenderer.getFoilBuffer(buffers, Sheets.translucentCullBlockSheet(), true, model instanceof FoiledModel); diff --git a/projects/fabric/src/client/java/dan200/computercraft/mixin/client/BlockModelAccessor.java b/projects/fabric/src/client/java/dan200/computercraft/mixin/client/BlockModelAccessor.java index 497a5b9a4..10863f758 100644 --- a/projects/fabric/src/client/java/dan200/computercraft/mixin/client/BlockModelAccessor.java +++ b/projects/fabric/src/client/java/dan200/computercraft/mixin/client/BlockModelAccessor.java @@ -6,11 +6,10 @@ package dan200.computercraft.mixin.client; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; +import org.jspecify.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -import javax.annotation.Nullable; - @Mixin(BlockModel.class) public interface BlockModelAccessor { @Accessor("parentLocation") diff --git a/projects/fabric/src/client/java/dan200/computercraft/mixin/client/SoundEngineMixin.java b/projects/fabric/src/client/java/dan200/computercraft/mixin/client/SoundEngineMixin.java index 943d3207a..b1d079e8f 100644 --- a/projects/fabric/src/client/java/dan200/computercraft/mixin/client/SoundEngineMixin.java +++ b/projects/fabric/src/client/java/dan200/computercraft/mixin/client/SoundEngineMixin.java @@ -9,14 +9,13 @@ import dan200.computercraft.client.sound.SpeakerManager; import net.minecraft.client.resources.sounds.SoundInstance; import net.minecraft.client.sounds.AudioStream; import net.minecraft.client.sounds.SoundEngine; +import org.jspecify.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import javax.annotation.Nullable; - import static dan200.computercraft.core.util.Nullability.assertNonNull; @Mixin(SoundEngine.class) diff --git a/projects/fabric/src/main/java/dan200/computercraft/impl/ComputerCraftAPIImpl.java b/projects/fabric/src/main/java/dan200/computercraft/impl/ComputerCraftAPIImpl.java index 14073805b..a14d95b76 100644 --- a/projects/fabric/src/main/java/dan200/computercraft/impl/ComputerCraftAPIImpl.java +++ b/projects/fabric/src/main/java/dan200/computercraft/impl/ComputerCraftAPIImpl.java @@ -13,8 +13,7 @@ import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.api.transfer.v1.storage.StorageView; import net.fabricmc.loader.api.FabricLoader; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; @AutoService(ComputerCraftAPIService.class) public final class ComputerCraftAPIImpl extends AbstractComputerCraftAPI implements ComputerCraftAPIFabricService { diff --git a/projects/fabric/src/main/java/dan200/computercraft/impl/Peripherals.java b/projects/fabric/src/main/java/dan200/computercraft/impl/Peripherals.java index ed3f2a6aa..dd9a1409e 100644 --- a/projects/fabric/src/main/java/dan200/computercraft/impl/Peripherals.java +++ b/projects/fabric/src/main/java/dan200/computercraft/impl/Peripherals.java @@ -11,8 +11,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.block.entity.BlockEntity; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * The registry for peripheral providers. diff --git a/projects/fabric/src/main/java/dan200/computercraft/mixin/ChunkMapMixin.java b/projects/fabric/src/main/java/dan200/computercraft/mixin/ChunkMapMixin.java index f99aca02b..9f769c6e8 100644 --- a/projects/fabric/src/main/java/dan200/computercraft/mixin/ChunkMapMixin.java +++ b/projects/fabric/src/main/java/dan200/computercraft/mixin/ChunkMapMixin.java @@ -12,6 +12,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.chunk.LevelChunk; import org.apache.commons.lang3.mutable.MutableObject; +import org.jspecify.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -20,8 +21,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import javax.annotation.Nullable; - @Mixin(ChunkMap.class) class ChunkMapMixin { @Final diff --git a/projects/fabric/src/main/java/dan200/computercraft/shared/FabricCommonHooks.java b/projects/fabric/src/main/java/dan200/computercraft/shared/FabricCommonHooks.java index 73a1ab689..62a72277b 100644 --- a/projects/fabric/src/main/java/dan200/computercraft/shared/FabricCommonHooks.java +++ b/projects/fabric/src/main/java/dan200/computercraft/shared/FabricCommonHooks.java @@ -18,8 +18,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public class FabricCommonHooks { public static boolean onBlockDestroy(Level level, Player player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity) { diff --git a/projects/fabric/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/InventoryMethods.java b/projects/fabric/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/InventoryMethods.java index f14753d37..5db5b9da3 100644 --- a/projects/fabric/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/InventoryMethods.java +++ b/projects/fabric/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/InventoryMethods.java @@ -22,8 +22,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; import java.util.Optional; diff --git a/projects/fabric/src/main/java/dan200/computercraft/shared/platform/FabricConfigFile.java b/projects/fabric/src/main/java/dan200/computercraft/shared/platform/FabricConfigFile.java index b31f6ba2b..2765b17c9 100644 --- a/projects/fabric/src/main/java/dan200/computercraft/shared/platform/FabricConfigFile.java +++ b/projects/fabric/src/main/java/dan200/computercraft/shared/platform/FabricConfigFile.java @@ -12,10 +12,10 @@ import com.electronwill.nightconfig.core.io.WritingMode; import com.google.errorprone.annotations.concurrent.GuardedBy; import dan200.computercraft.shared.config.ConfigFile; import org.apache.commons.lang3.function.TriFunction; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; diff --git a/projects/fabric/src/main/java/dan200/computercraft/shared/platform/PlatformHelperImpl.java b/projects/fabric/src/main/java/dan200/computercraft/shared/platform/PlatformHelperImpl.java index 700f8a777..802b069cd 100644 --- a/projects/fabric/src/main/java/dan200/computercraft/shared/platform/PlatformHelperImpl.java +++ b/projects/fabric/src/main/java/dan200/computercraft/shared/platform/PlatformHelperImpl.java @@ -77,8 +77,8 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -207,7 +207,7 @@ public class PlatformHelperImpl implements PlatformHelper { } @Override - @SuppressWarnings({ "UnstableApiUsage", "NullAway" }) // FIXME: SIDED is treated as nullable by NullAway + @SuppressWarnings("UnstableApiUsage") public @Nullable ContainerTransfer getContainer(ServerLevel level, BlockPos pos, Direction side) { var storage = ItemStorage.SIDED.find(level, pos, side); if (storage != null) return FabricContainerTransfer.of(storage); @@ -258,7 +258,7 @@ public class PlatformHelperImpl implements PlatformHelper { @Override public int getBurnTime(ItemStack stack) { - @Nullable var fuel = FuelRegistry.INSTANCE.get(stack.getItem()); + var fuel = FuelRegistry.INSTANCE.get(stack.getItem()); return fuel == null ? 0 : fuel; } diff --git a/projects/forge/src/client/java/dan200/computercraft/client/model/FoiledModel.java b/projects/forge/src/client/java/dan200/computercraft/client/model/FoiledModel.java index c351b79ee..7f71173ed 100644 --- a/projects/forge/src/client/java/dan200/computercraft/client/model/FoiledModel.java +++ b/projects/forge/src/client/java/dan200/computercraft/client/model/FoiledModel.java @@ -14,7 +14,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.BakedModelWrapper; import net.minecraftforge.client.model.data.ModelData; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; diff --git a/projects/forge/src/client/java/dan200/computercraft/client/model/TransformedBakedModel.java b/projects/forge/src/client/java/dan200/computercraft/client/model/TransformedBakedModel.java index 2d457fe52..c36f4de2a 100644 --- a/projects/forge/src/client/java/dan200/computercraft/client/model/TransformedBakedModel.java +++ b/projects/forge/src/client/java/dan200/computercraft/client/model/TransformedBakedModel.java @@ -14,8 +14,8 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.BakedModelWrapper; import net.minecraftforge.client.model.data.ModelData; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; /** diff --git a/projects/forge/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelperImpl.java b/projects/forge/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelperImpl.java index 612a79225..86fb1fe4c 100644 --- a/projects/forge/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelperImpl.java +++ b/projects/forge/src/client/java/dan200/computercraft/client/platform/ClientPlatformHelperImpl.java @@ -24,8 +24,8 @@ import net.minecraft.sounds.SoundEvent; import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemStack; import net.minecraftforge.client.model.data.ModelData; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Arrays; @AutoService(dan200.computercraft.impl.client.ClientPlatformHelper.class) @@ -49,7 +49,7 @@ public class ClientPlatformHelperImpl implements ClientPlatformHelper { } @Override - public void renderBakedModel(PoseStack transform, MultiBufferSource buffers, BakedModel model, int lightmapCoord, int overlayLight, @Nullable int[] tints) { + public void renderBakedModel(PoseStack transform, MultiBufferSource buffers, BakedModel model, int lightmapCoord, int overlayLight, int @Nullable [] tints) { for (var renderType : model.getRenderTypes(ItemStack.EMPTY, true)) { var buffer = buffers.getBuffer(renderType); for (var face : directions) { diff --git a/projects/forge/src/examples/java/com/example/examplemod/ForgeExampleMod.java b/projects/forge/src/examples/java/com/example/examplemod/ForgeExampleMod.java index e54f0f6fb..34b8e6e95 100644 --- a/projects/forge/src/examples/java/com/example/examplemod/ForgeExampleMod.java +++ b/projects/forge/src/examples/java/com/example/examplemod/ForgeExampleMod.java @@ -18,8 +18,8 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.registries.RegisterEvent; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.function.Function; /** diff --git a/projects/forge/src/main/java/dan200/computercraft/impl/ComputerCraftAPIImpl.java b/projects/forge/src/main/java/dan200/computercraft/impl/ComputerCraftAPIImpl.java index 597a71618..f493a52a0 100644 --- a/projects/forge/src/main/java/dan200/computercraft/impl/ComputerCraftAPIImpl.java +++ b/projects/forge/src/main/java/dan200/computercraft/impl/ComputerCraftAPIImpl.java @@ -18,8 +18,7 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.ModList; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import static dan200.computercraft.shared.Capabilities.CAPABILITY_WIRED_ELEMENT; diff --git a/projects/forge/src/main/java/dan200/computercraft/impl/Peripherals.java b/projects/forge/src/main/java/dan200/computercraft/impl/Peripherals.java index 916af6367..25a904450 100644 --- a/projects/forge/src/main/java/dan200/computercraft/impl/Peripherals.java +++ b/projects/forge/src/main/java/dan200/computercraft/impl/Peripherals.java @@ -16,10 +16,10 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.capabilities.Capability; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.util.Collection; import java.util.LinkedHashSet; import java.util.Objects; diff --git a/projects/forge/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/FluidMethods.java b/projects/forge/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/FluidMethods.java index 4408b8b95..d979be7ba 100644 --- a/projects/forge/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/FluidMethods.java +++ b/projects/forge/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/FluidMethods.java @@ -16,8 +16,8 @@ import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; import java.util.Optional; diff --git a/projects/forge/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/InventoryMethods.java b/projects/forge/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/InventoryMethods.java index d1c109485..adcb59459 100644 --- a/projects/forge/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/InventoryMethods.java +++ b/projects/forge/src/main/java/dan200/computercraft/shared/peripheral/generic/methods/InventoryMethods.java @@ -17,8 +17,8 @@ import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.InvWrapper; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; import java.util.Optional; diff --git a/projects/forge/src/main/java/dan200/computercraft/shared/platform/FakePlayerExt.java b/projects/forge/src/main/java/dan200/computercraft/shared/platform/FakePlayerExt.java index ad32e9280..eb493bd60 100644 --- a/projects/forge/src/main/java/dan200/computercraft/shared/platform/FakePlayerExt.java +++ b/projects/forge/src/main/java/dan200/computercraft/shared/platform/FakePlayerExt.java @@ -13,8 +13,8 @@ import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.player.Player; import net.minecraftforge.common.util.FakePlayer; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.OptionalInt; import static dan200.computercraft.shared.platform.FakePlayerConstants.MAX_REACH; diff --git a/projects/forge/src/main/java/dan200/computercraft/shared/platform/NetworkHandler.java b/projects/forge/src/main/java/dan200/computercraft/shared/platform/NetworkHandler.java index 1c07b3b24..02f8f08e5 100644 --- a/projects/forge/src/main/java/dan200/computercraft/shared/platform/NetworkHandler.java +++ b/projects/forge/src/main/java/dan200/computercraft/shared/platform/NetworkHandler.java @@ -20,10 +20,10 @@ import net.minecraftforge.network.NetworkDirection; import net.minecraftforge.network.NetworkEvent; import net.minecraftforge.network.NetworkRegistry; import net.minecraftforge.network.simple.SimpleChannel; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.util.function.Function; import static dan200.computercraft.core.util.Nullability.assertNonNull; diff --git a/projects/forge/src/main/java/dan200/computercraft/shared/platform/PlatformHelperImpl.java b/projects/forge/src/main/java/dan200/computercraft/shared/platform/PlatformHelperImpl.java index c4c54ea20..e58d4a385 100644 --- a/projects/forge/src/main/java/dan200/computercraft/shared/platform/PlatformHelperImpl.java +++ b/projects/forge/src/main/java/dan200/computercraft/shared/platform/PlatformHelperImpl.java @@ -77,8 +77,8 @@ import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistry; import net.minecraftforge.registries.RegistryManager; import net.minecraftforge.registries.RegistryObject; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.*; import java.util.function.BiFunction; import java.util.function.Consumer; diff --git a/projects/forge/src/main/java/dan200/computercraft/shared/util/CapabilityProvider.java b/projects/forge/src/main/java/dan200/computercraft/shared/util/CapabilityProvider.java index 4c5b2ca14..b28d61adf 100644 --- a/projects/forge/src/main/java/dan200/computercraft/shared/util/CapabilityProvider.java +++ b/projects/forge/src/main/java/dan200/computercraft/shared/util/CapabilityProvider.java @@ -12,8 +12,8 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.AttachCapabilitiesEvent; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Objects; import java.util.function.BooleanSupplier; import java.util.function.Supplier; diff --git a/projects/forge/src/main/java/dan200/computercraft/shared/util/CapabilityUtil.java b/projects/forge/src/main/java/dan200/computercraft/shared/util/CapabilityUtil.java index 8e4b9c204..a028d843d 100644 --- a/projects/forge/src/main/java/dan200/computercraft/shared/util/CapabilityUtil.java +++ b/projects/forge/src/main/java/dan200/computercraft/shared/util/CapabilityUtil.java @@ -9,8 +9,7 @@ import net.minecraft.core.Direction; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.util.LazyOptional; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public final class CapabilityUtil { private CapabilityUtil() { @@ -22,7 +21,7 @@ public final class CapabilityUtil { return null; } - public static void invalidate(@Nullable LazyOptional[] caps) { + public static void invalidate(@Nullable LazyOptional @Nullable [] caps) { if (caps == null) return; for (var i = 0; i < caps.length; i++) { diff --git a/projects/forge/src/main/java/dan200/computercraft/shared/util/SidedCapabilityProvider.java b/projects/forge/src/main/java/dan200/computercraft/shared/util/SidedCapabilityProvider.java index eb50ef21a..8614e8795 100644 --- a/projects/forge/src/main/java/dan200/computercraft/shared/util/SidedCapabilityProvider.java +++ b/projects/forge/src/main/java/dan200/computercraft/shared/util/SidedCapabilityProvider.java @@ -12,8 +12,8 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.AttachCapabilitiesEvent; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Objects; import java.util.function.BooleanSupplier; @@ -31,7 +31,7 @@ public final class SidedCapabilityProvider implements ICapabilityProvider { private final Capability cap; private final Provider supplier; private final BooleanSupplier isRemoved; - private @Nullable LazyOptional[] instances; + private @Nullable LazyOptional @Nullable [] instances; private SidedCapabilityProvider(Capability cap, Provider supplier, BooleanSupplier isRemoved) { this.cap = Objects.requireNonNull(cap, "Capability cannot be null"); diff --git a/projects/lints/src/main/kotlin/cc/tweaked/linter/ForbiddenImport.kt b/projects/lints/src/main/kotlin/cc/tweaked/linter/ForbiddenImport.kt new file mode 100644 index 000000000..fa10f9795 --- /dev/null +++ b/projects/lints/src/main/kotlin/cc/tweaked/linter/ForbiddenImport.kt @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2025 The CC: Tweaked Developers +// +// SPDX-License-Identifier: MPL-2.0 + +@file:Suppress("JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE") + +package cc.tweaked.linter + +import com.google.errorprone.BugPattern +import com.google.errorprone.VisitorState +import com.google.errorprone.bugpatterns.BugChecker +import com.google.errorprone.fixes.SuggestedFix +import com.google.errorprone.matchers.Description +import com.google.errorprone.util.ASTHelpers +import com.sun.source.tree.ImportTree +import com.sun.source.tree.Tree + +@BugPattern( + summary = "Checks for forbidden imports.", + severity = BugPattern.SeverityLevel.ERROR, + tags = [BugPattern.StandardTags.LIKELY_ERROR], +) +class ForbiddenImport : BugChecker(), BugChecker.ImportTreeMatcher { + override fun matchImport(tree: ImportTree, state: VisitorState): Description { + if (tree.isStatic || tree.qualifiedIdentifier.kind != Tree.Kind.MEMBER_SELECT) return Description.NO_MATCH + + val sym = ASTHelpers.getSymbol(tree.qualifiedIdentifier) ?: return Description.NO_MATCH + val importedName = sym.qualifiedName.toString() + if (!IMPORTS.contains(importedName)) return Description.NO_MATCH + + val message = buildDescription(tree.qualifiedIdentifier).setMessage("Cannot import this symbol") + val replacement = ALTERNATIVE_IMPORTS[importedName] + if (replacement != null) message.addFix(SuggestedFix.replace(tree.qualifiedIdentifier, replacement)) + + return message.build() + } + + companion object { + private val ALTERNATIVE_IMPORTS = mapOf( + // Ban JSR 305 and JetBrains @Nullable, and prefer the JSpecify one. + "org.javax.annotation.Nullable" to "org.jspecify.annotations.Nullable", + "org.jetbrains.annotations.Nullable" to "org.jspecify.annotations.Nullable", + // Prefer ErrorProne annotations over JSR ones. + "javax.annotation.CheckReturnValue" to "com.google.errorprone.annotations.CheckReturnValue", + "javax.annotation.OverridingMethodsMustInvokeSuper" to "com.google.errorprone.annotations.OverridingMethodsMustInvokeSuper", + "javax.annotation.concurrent.GuardedBy" to "com.google.errorprone.annotations.concurrent.GuardedBy", + ) + + private val IMPORTS: Set = setOf( + // We ban all @Nonnull annotations, because that should be default already. + "javax.annotation.Nonnull", + "org.jetbrains.annotations.NotNull", + "org.jspecify.annotations.NonNull", + ) + ALTERNATIVE_IMPORTS.keys + } +} diff --git a/projects/lints/src/main/resources/META-INF/services/com.google.errorprone.bugpatterns.BugChecker b/projects/lints/src/main/resources/META-INF/services/com.google.errorprone.bugpatterns.BugChecker index 388a1372a..075ac218b 100644 --- a/projects/lints/src/main/resources/META-INF/services/com.google.errorprone.bugpatterns.BugChecker +++ b/projects/lints/src/main/resources/META-INF/services/com.google.errorprone.bugpatterns.BugChecker @@ -2,6 +2,7 @@ # # SPDX-License-Identifier: MPL-2.0 cc.tweaked.linter.ExtraMustCallSuper +cc.tweaked.linter.ForbiddenImport cc.tweaked.linter.LoaderOverride cc.tweaked.linter.MissingLoaderOverride cc.tweaked.linter.SideChecker diff --git a/projects/lints/src/test/java/cc/tweaked/linter/TestForbiddenImport.java b/projects/lints/src/test/java/cc/tweaked/linter/TestForbiddenImport.java new file mode 100644 index 000000000..9e90dbcf9 --- /dev/null +++ b/projects/lints/src/test/java/cc/tweaked/linter/TestForbiddenImport.java @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2022 The CC: Tweaked Developers +// +// SPDX-License-Identifier: MPL-2.0 + +package cc.tweaked.linter; + +import com.google.common.base.Predicates; +import com.google.errorprone.CompilationTestHelper; +import org.junit.jupiter.api.Test; + +public class TestForbiddenImport { + private final CompilationTestHelper compilationHelper = CompilationTestHelper.newInstance(ForbiddenImport.class, getClass()); + + @Test + public void testForbiddenImport() { + compilationHelper + .addSourceLines("Import.java", """ + // BUG: Diagnostic matches: X + import org.jspecify.annotations.NonNull; + class X { + } + """) + .expectErrorMessage("X", Predicates.containsPattern("Cannot import this symbol")) + .doTest(); + } + + @Test + public void testForbiddenImportSuggestion() { + compilationHelper + .addSourceLines("Import.java", """ + // BUG: Diagnostic matches: X + import javax.annotation.concurrent.GuardedBy; + class X { + } + """) + .expectErrorMessage("X", Predicates.containsPattern("Did you mean 'import com.google.errorprone.annotations.concurrent.GuardedBy;'")) + .doTest(); + } +} diff --git a/projects/standalone/src/main/java/cc/tweaked/standalone/Main.java b/projects/standalone/src/main/java/cc/tweaked/standalone/Main.java index 35411959f..ad96dce4d 100644 --- a/projects/standalone/src/main/java/cc/tweaked/standalone/Main.java +++ b/projects/standalone/src/main/java/cc/tweaked/standalone/Main.java @@ -20,6 +20,7 @@ import dan200.computercraft.core.terminal.TextBuffer; import dan200.computercraft.core.util.Colour; import org.apache.commons.cli.*; import org.jetbrains.annotations.Contract; +import org.jspecify.annotations.Nullable; import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFWErrorCallback; import org.lwjgl.opengl.GL; @@ -29,7 +30,6 @@ import org.lwjgl.system.MemoryStack; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.io.IOException; import java.io.PrintWriter; import java.nio.ByteBuffer; diff --git a/projects/standalone/src/main/java/cc/tweaked/standalone/StandaloneComputerEnvironment.java b/projects/standalone/src/main/java/cc/tweaked/standalone/StandaloneComputerEnvironment.java index 74527be6e..da10d46bd 100644 --- a/projects/standalone/src/main/java/cc/tweaked/standalone/StandaloneComputerEnvironment.java +++ b/projects/standalone/src/main/java/cc/tweaked/standalone/StandaloneComputerEnvironment.java @@ -9,10 +9,10 @@ import dan200.computercraft.core.computer.ComputerEnvironment; import dan200.computercraft.core.filesystem.MemoryMount; import dan200.computercraft.core.filesystem.WritableFileMount; import dan200.computercraft.core.metrics.MetricsObserver; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.nio.file.Path; /** diff --git a/projects/standalone/src/main/java/cc/tweaked/standalone/StandaloneGlobalEnvironment.java b/projects/standalone/src/main/java/cc/tweaked/standalone/StandaloneGlobalEnvironment.java index c454645a8..a7a548be9 100644 --- a/projects/standalone/src/main/java/cc/tweaked/standalone/StandaloneGlobalEnvironment.java +++ b/projects/standalone/src/main/java/cc/tweaked/standalone/StandaloneGlobalEnvironment.java @@ -7,7 +7,7 @@ package cc.tweaked.standalone; import dan200.computercraft.api.filesystem.Mount; import dan200.computercraft.core.computer.GlobalEnvironment; import dan200.computercraft.core.filesystem.FileMount; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/projects/web/src/builder/java/cc/tweaked/web/builder/PatchCobalt.java b/projects/web/src/builder/java/cc/tweaked/web/builder/PatchCobalt.java index 6b623f4a5..644e6929e 100644 --- a/projects/web/src/builder/java/cc/tweaked/web/builder/PatchCobalt.java +++ b/projects/web/src/builder/java/cc/tweaked/web/builder/PatchCobalt.java @@ -4,13 +4,12 @@ package cc.tweaked.web.builder; +import org.jspecify.annotations.Nullable; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; -import javax.annotation.Nullable; - import static org.objectweb.asm.Opcodes.*; /** diff --git a/projects/web/src/builder/java/cc/tweaked/web/builder/TransformingClassLoader.java b/projects/web/src/builder/java/cc/tweaked/web/builder/TransformingClassLoader.java index 23c50616c..0bd15b413 100644 --- a/projects/web/src/builder/java/cc/tweaked/web/builder/TransformingClassLoader.java +++ b/projects/web/src/builder/java/cc/tweaked/web/builder/TransformingClassLoader.java @@ -4,13 +4,13 @@ package cc.tweaked.web.builder; +import org.jspecify.annotations.Nullable; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.commons.ClassRemapper; import org.objectweb.asm.commons.Remapper; -import javax.annotation.Nullable; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; diff --git a/projects/web/src/main/java/cc/tweaked/web/EmulatedComputer.java b/projects/web/src/main/java/cc/tweaked/web/EmulatedComputer.java index c39467d74..66e760443 100644 --- a/projects/web/src/main/java/cc/tweaked/web/EmulatedComputer.java +++ b/projects/web/src/main/java/cc/tweaked/web/EmulatedComputer.java @@ -21,13 +21,13 @@ import dan200.computercraft.core.computer.ComputerSide; import dan200.computercraft.core.filesystem.MemoryMount; import dan200.computercraft.core.metrics.MetricsObserver; import dan200.computercraft.core.terminal.Terminal; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.teavm.jso.JSObject; import org.teavm.jso.core.JSString; import org.teavm.jso.typedarrays.ArrayBuffer; -import javax.annotation.Nullable; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Objects; diff --git a/projects/web/src/main/java/cc/tweaked/web/EmulatorEnvironment.java b/projects/web/src/main/java/cc/tweaked/web/EmulatorEnvironment.java index 7230cfa23..bd1d418e9 100644 --- a/projects/web/src/main/java/cc/tweaked/web/EmulatorEnvironment.java +++ b/projects/web/src/main/java/cc/tweaked/web/EmulatorEnvironment.java @@ -7,8 +7,8 @@ package cc.tweaked.web; import cc.tweaked.web.js.Callbacks; import dan200.computercraft.api.filesystem.Mount; import dan200.computercraft.core.computer.GlobalEnvironment; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -21,7 +21,7 @@ final class EmulatorEnvironment implements GlobalEnvironment { private final String version = Callbacks.getModVersion(); private @Nullable ResourceMount romMount; - private @Nullable byte[] bios; + private byte @Nullable [] bios; private EmulatorEnvironment() { } diff --git a/projects/web/src/main/java/cc/tweaked/web/ResourceMount.java b/projects/web/src/main/java/cc/tweaked/web/ResourceMount.java index b6877dd24..bbbc803c8 100644 --- a/projects/web/src/main/java/cc/tweaked/web/ResourceMount.java +++ b/projects/web/src/main/java/cc/tweaked/web/ResourceMount.java @@ -7,8 +7,8 @@ package cc.tweaked.web; import cc.tweaked.web.js.Callbacks; import dan200.computercraft.core.apis.handles.ArrayByteChannel; import dan200.computercraft.core.filesystem.AbstractInMemoryMount; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.nio.channels.SeekableByteChannel; /** @@ -43,7 +43,7 @@ final class ResourceMount extends AbstractInMemoryMount protected static final class FileEntry extends AbstractInMemoryMount.FileEntry { private final String path; - private @Nullable byte[] contents; + private byte @Nullable [] contents; FileEntry(String path) { this.path = path; diff --git a/projects/web/src/main/java/cc/tweaked/web/js/ComputerDisplay.java b/projects/web/src/main/java/cc/tweaked/web/js/ComputerDisplay.java index ecd5b9a2f..2cc6c194d 100644 --- a/projects/web/src/main/java/cc/tweaked/web/js/ComputerDisplay.java +++ b/projects/web/src/main/java/cc/tweaked/web/js/ComputerDisplay.java @@ -4,10 +4,9 @@ package cc.tweaked.web.js; +import org.jspecify.annotations.Nullable; import org.teavm.jso.JSObject; -import javax.annotation.Nullable; - /** * The Javascript-side terminal which displays this computer. * diff --git a/projects/web/src/main/java/cc/tweaked/web/js/ComputerHandle.java b/projects/web/src/main/java/cc/tweaked/web/js/ComputerHandle.java index 87fd462f7..687271b8a 100644 --- a/projects/web/src/main/java/cc/tweaked/web/js/ComputerHandle.java +++ b/projects/web/src/main/java/cc/tweaked/web/js/ComputerHandle.java @@ -4,13 +4,12 @@ package cc.tweaked.web.js; +import org.jspecify.annotations.Nullable; import org.teavm.jso.JSObject; import org.teavm.jso.JSProperty; import org.teavm.jso.core.JSString; import org.teavm.jso.typedarrays.ArrayBuffer; -import javax.annotation.Nullable; - /** * A Javascript-facing interface for controlling computers. */ diff --git a/projects/web/src/main/java/cc/tweaked/web/js/JavascriptConv.java b/projects/web/src/main/java/cc/tweaked/web/js/JavascriptConv.java index 713fc0934..46216c579 100644 --- a/projects/web/src/main/java/cc/tweaked/web/js/JavascriptConv.java +++ b/projects/web/src/main/java/cc/tweaked/web/js/JavascriptConv.java @@ -5,6 +5,7 @@ package cc.tweaked.web.js; import org.jetbrains.annotations.Contract; +import org.jspecify.annotations.Nullable; import org.teavm.jso.JSBody; import org.teavm.jso.JSByRef; import org.teavm.jso.JSObject; @@ -15,7 +16,6 @@ import org.teavm.jso.core.JSString; import org.teavm.jso.typedarrays.ArrayBuffer; import org.teavm.jso.typedarrays.Int8Array; -import javax.annotation.Nullable; import java.nio.ByteBuffer; /** @@ -29,7 +29,7 @@ public class JavascriptConv { * @return The converted value. */ @Contract("null -> null; !null -> !null") - public static @Nullable Object[] toJava(@Nullable JSObject[] value) { + public static @Nullable Object @Nullable [] toJava(@Nullable JSObject @Nullable [] value) { if (value == null) return null; var out = new Object[value.length]; for (var i = 0; i < value.length; i++) out[i] = toJava(value[i]); diff --git a/projects/web/src/main/java/cc/tweaked/web/peripheral/AudioState.java b/projects/web/src/main/java/cc/tweaked/web/peripheral/AudioState.java index 9e3f5838c..fc2194286 100644 --- a/projects/web/src/main/java/cc/tweaked/web/peripheral/AudioState.java +++ b/projects/web/src/main/java/cc/tweaked/web/peripheral/AudioState.java @@ -6,10 +6,10 @@ package cc.tweaked.web.peripheral; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaTable; +import org.jspecify.annotations.Nullable; import org.teavm.jso.webaudio.AudioBuffer; import org.teavm.jso.webaudio.AudioContext; -import javax.annotation.Nullable; import java.util.Optional; import static cc.tweaked.web.peripheral.SpeakerPeripheral.SAMPLE_RATE; diff --git a/projects/web/src/main/java/cc/tweaked/web/peripheral/SpeakerPeripheral.java b/projects/web/src/main/java/cc/tweaked/web/peripheral/SpeakerPeripheral.java index d4f57ad3b..930f70fd6 100644 --- a/projects/web/src/main/java/cc/tweaked/web/peripheral/SpeakerPeripheral.java +++ b/projects/web/src/main/java/cc/tweaked/web/peripheral/SpeakerPeripheral.java @@ -10,9 +10,9 @@ import dan200.computercraft.api.lua.LuaTable; import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.IPeripheral; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; +import org.jspecify.annotations.Nullable; import org.teavm.jso.webaudio.AudioContext; -import javax.annotation.Nullable; import java.util.Optional; import static dan200.computercraft.api.lua.LuaValues.checkFinite; diff --git a/projects/web/src/main/java/dan200/computercraft/core/apis/http/request/THttpRequest.java b/projects/web/src/main/java/dan200/computercraft/core/apis/http/request/THttpRequest.java index 13f9d48ee..08a2081da 100644 --- a/projects/web/src/main/java/dan200/computercraft/core/apis/http/request/THttpRequest.java +++ b/projects/web/src/main/java/dan200/computercraft/core/apis/http/request/THttpRequest.java @@ -16,12 +16,12 @@ import dan200.computercraft.core.apis.http.ResourceGroup; import io.netty.handler.codec.http.HttpHeaderNames; import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpMethod; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.teavm.jso.ajax.XMLHttpRequest; import org.teavm.jso.typedarrays.ArrayBuffer; -import javax.annotation.Nullable; import java.net.URI; import java.net.URISyntaxException; import java.nio.ByteBuffer; diff --git a/projects/web/src/main/java/dan200/computercraft/core/apis/http/websocket/TWebsocket.java b/projects/web/src/main/java/dan200/computercraft/core/apis/http/websocket/TWebsocket.java index 671eeb506..f9154cc5f 100644 --- a/projects/web/src/main/java/dan200/computercraft/core/apis/http/websocket/TWebsocket.java +++ b/projects/web/src/main/java/dan200/computercraft/core/apis/http/websocket/TWebsocket.java @@ -13,10 +13,10 @@ import dan200.computercraft.core.apis.http.ResourceGroup; import dan200.computercraft.core.apis.http.options.Action; import dan200.computercraft.core.apis.http.options.Options; import io.netty.handler.codec.http.HttpHeaders; +import org.jspecify.annotations.Nullable; import org.teavm.jso.typedarrays.Int8Array; import org.teavm.jso.websocket.WebSocket; -import javax.annotation.Nullable; import java.net.URI; import java.nio.ByteBuffer; diff --git a/projects/web/src/main/java/dan200/computercraft/core/asm/MethodReflection.java b/projects/web/src/main/java/dan200/computercraft/core/asm/MethodReflection.java index 96c3ed889..350bd268b 100644 --- a/projects/web/src/main/java/dan200/computercraft/core/asm/MethodReflection.java +++ b/projects/web/src/main/java/dan200/computercraft/core/asm/MethodReflection.java @@ -13,9 +13,9 @@ import dan200.computercraft.api.lua.MethodResult; import dan200.computercraft.api.peripheral.PeripheralType; import dan200.computercraft.core.methods.LuaMethod; import dan200.computercraft.core.methods.NamedMethod; +import org.jspecify.annotations.Nullable; import org.teavm.metaprogramming.*; -import javax.annotation.Nullable; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; diff --git a/projects/web/src/main/java/dan200/computercraft/core/asm/StaticGenerator.java b/projects/web/src/main/java/dan200/computercraft/core/asm/StaticGenerator.java index dddf9a7af..945c86246 100644 --- a/projects/web/src/main/java/dan200/computercraft/core/asm/StaticGenerator.java +++ b/projects/web/src/main/java/dan200/computercraft/core/asm/StaticGenerator.java @@ -11,12 +11,12 @@ import com.google.common.primitives.Primitives; import com.google.common.reflect.TypeToken; import dan200.computercraft.api.lua.*; import dan200.computercraft.core.methods.LuaMethod; +import org.jspecify.annotations.Nullable; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Type; import org.teavm.metaprogramming.ReflectClass; -import javax.annotation.Nullable; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.nio.ByteBuffer; @@ -124,8 +124,7 @@ public final class StaticGenerator { } } - @Nullable - private byte[] generate(String className, Class target, Method targetMethod, boolean unsafe) { + private byte @Nullable [] generate(String className, Class target, Method targetMethod, boolean unsafe) { var internalName = className.replace(".", "/"); // Construct a public final class which extends Object and implements MethodInstance.Delegate @@ -207,8 +206,7 @@ public final class StaticGenerator { return cw.toByteArray(); } - @Nullable - private Boolean loadArg(MethodVisitor mw, Class target, Method method, boolean unsafe, java.lang.reflect.Type genericArg, int argIndex) { + private @Nullable Boolean loadArg(MethodVisitor mw, Class target, Method method, boolean unsafe, java.lang.reflect.Type genericArg, int argIndex) { if (genericArg == target) { mw.visitVarInsn(ALOAD, 1); mw.visitTypeInsn(CHECKCAST, Type.getInternalName(target));