diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/api/geo/GEOResource.java b/src/main/java/io/github/thebusybiscuit/slimefun4/api/geo/GEOResource.java index cfa3cbfa5..d3fd97631 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/api/geo/GEOResource.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/api/geo/GEOResource.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.api.geo; +import javax.annotation.Nonnull; + import org.bukkit.Chunk; import org.bukkit.Keyed; import org.bukkit.World; @@ -43,7 +45,7 @@ public interface GEOResource extends Keyed { * * @return The default supply found in a {@link Chunk} with the given {@link Biome} */ - int getDefaultSupply(Environment environment, Biome biome); + int getDefaultSupply(@Nonnull Environment environment, @Nonnull Biome biome); /** * Returns how much the value may deviate from the default supply (positive only). @@ -57,6 +59,7 @@ public interface GEOResource extends Keyed { * * @return The name of this Resource */ + @Nonnull String getName(); /** @@ -65,6 +68,7 @@ public interface GEOResource extends Keyed { * * @return The {@link ItemStack} version of this Resource. */ + @Nonnull ItemStack getItem(); /** @@ -90,7 +94,8 @@ public interface GEOResource extends Keyed { * The {@link Player} to localize the name for. * @return The localized name for this {@link GEOResource} */ - default String getName(Player p) { + @Nonnull + default String getName(@Nonnull Player p) { String name = SlimefunPlugin.getLocalization().getResourceString(p, "resources." + getKey().getNamespace() + "." + getKey().getKey()); return name == null ? getName() : name; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlock.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlock.java index af5572702..0cdf91270 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlock.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlock.java @@ -5,6 +5,9 @@ import java.util.HashSet; import java.util.Objects; import java.util.Set; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + import org.apache.commons.lang.Validate; import org.bukkit.Material; import org.bukkit.Tag; @@ -44,6 +47,7 @@ public class MultiBlock { } } + @Nonnull public static Set> getSupportedTags() { return SUPPORTED_TAGS; } @@ -53,7 +57,7 @@ public class MultiBlock { private final BlockFace trigger; private final boolean isSymmetric; - public MultiBlock(SlimefunItem item, Material[] build, BlockFace trigger) { + public MultiBlock(@Nonnull SlimefunItem item, Material[] build, @Nonnull BlockFace trigger) { Validate.notNull(item, "A MultiBlock requires a SlimefunItem!"); if (build == null || build.length != 9) { @@ -70,18 +74,21 @@ public class MultiBlock { this.isSymmetric = isSymmetric(build); } + @Nonnull public SlimefunItem getSlimefunItem() { return item; } - private static boolean isSymmetric(Material[] blocks) { + private static boolean isSymmetric(@Nonnull Material[] blocks) { return blocks[0] == blocks[2] && blocks[3] == blocks[5] && blocks[6] == blocks[8]; } + @Nonnull public Material[] getStructure() { return blocks; } + @Nonnull public BlockFace getTriggerBlock() { return trigger; } @@ -112,7 +119,7 @@ public class MultiBlock { return Objects.hash(item.getID(), blocks, trigger, isSymmetric); } - private boolean compareBlocks(Material a, Material b) { + private boolean compareBlocks(Material a, @Nullable Material b) { if (b != null) { for (Tag tag : SUPPORTED_TAGS) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlockMachine.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlockMachine.java index 1caaa946e..8824d2a6e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlockMachine.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlockMachine.java @@ -5,6 +5,7 @@ import java.util.Arrays; import java.util.List; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import org.apache.commons.lang.Validate; import org.bukkit.Material; @@ -77,6 +78,7 @@ public abstract class MultiBlockMachine extends SlimefunItem implements NotPlace return displayRecipes; } + @Nonnull public MultiBlock getMultiBlock() { return multiblock; } @@ -121,7 +123,9 @@ public abstract class MultiBlockMachine extends SlimefunItem implements NotPlace return true; } - else return false; + else { + return false; + } }; } @@ -158,7 +162,8 @@ public abstract class MultiBlockMachine extends SlimefunItem implements NotPlace } } - protected Inventory findOutputChest(Block b, ItemStack output) { + @Nullable + protected Inventory findOutputChest(@Nonnull Block b, @Nonnull ItemStack output) { for (BlockFace face : outputFaces) { Block potentialOutput = b.getRelative(face); @@ -183,6 +188,7 @@ public abstract class MultiBlockMachine extends SlimefunItem implements NotPlace return null; } + @Nonnull private static Material[] convertItemStacksToMaterial(ItemStack[] items) { List materials = new ArrayList<>(); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomTextureService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomTextureService.java index 741cdfa0f..c84cd3830 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomTextureService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomTextureService.java @@ -61,7 +61,7 @@ public class CustomTextureService { config.setDefaultValue("_UI_NEXT_INACTIVE", 0); for (SlimefunItem item : items) { - if (item != null && item.getID() != null) { + if (item != null) { config.setDefaultValue(item.getID(), 0); if (config.getInt(item.getID()) != 0) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java index 28cbf278a..a8fee3d63 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java @@ -49,7 +49,7 @@ public class LocalizationService extends SlimefunLocalization implements Persist private final NamespacedKey languageKey; private final Language defaultLanguage; - public LocalizationService(SlimefunPlugin plugin, String prefix, String serverDefaultLanguage) { + public LocalizationService(@Nonnull SlimefunPlugin plugin, @Nullable String prefix, @Nullable String serverDefaultLanguage) { super(plugin); this.plugin = plugin; @@ -102,17 +102,20 @@ public class LocalizationService extends SlimefunLocalization implements Persist } @Override + @Nonnull public NamespacedKey getKey() { return languageKey; } @Override + @Nullable public Language getLanguage(@Nonnull String id) { Validate.notNull(id, "The language id cannot be null"); return languages.get(id); } @Override + @Nonnull public Collection getLanguages() { return languages.values(); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/PerWorldSettingsService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/PerWorldSettingsService.java index 03a308515..f47323184 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/PerWorldSettingsService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/PerWorldSettingsService.java @@ -204,7 +204,7 @@ public class PerWorldSettingsService { Config config = getConfig(world); for (SlimefunItem item : SlimefunPlugin.getRegistry().getEnabledSlimefunItems()) { - if (item != null && item.getID() != null) { + if (item != null) { String addon = item.getAddon().getName().toLowerCase(Locale.ROOT); config.setValue(addon + '.' + item.getID(), !items.contains(item.getID())); } @@ -245,7 +245,7 @@ public class PerWorldSettingsService { private void loadItemsFromWorldConfig(String worldName, Config config, Set items) { for (SlimefunItem item : SlimefunPlugin.getRegistry().getEnabledSlimefunItems()) { - if (item != null && item.getID() != null) { + if (item != null) { String addon = item.getAddon().getName().toLowerCase(Locale.ROOT); config.setDefaultValue(addon + ".enabled", true); config.setDefaultValue(addon + '.' + item.getID(), true); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/PermissionsService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/PermissionsService.java index 0237faff6..d3a1a7853 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/PermissionsService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/PermissionsService.java @@ -40,7 +40,7 @@ public class PermissionsService { public void register(@Nonnull Iterable items, boolean save) { for (SlimefunItem item : items) { - if (item != null && item.getID() != null) { + if (item != null) { String path = item.getID() + ".permission"; config.setDefaultValue(path, "none"); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/RecipeChoiceTask.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/RecipeChoiceTask.java index c2facc104..51917a37e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/RecipeChoiceTask.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/RecipeChoiceTask.java @@ -3,6 +3,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.guide; import java.util.HashMap; import java.util.Map; +import javax.annotation.Nonnull; + import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -39,18 +41,18 @@ class RecipeChoiceTask implements Runnable { * @param inv * The {@link Inventory} to start this task for */ - public void start(Inventory inv) { + public void start(@Nonnull Inventory inv) { Validate.notNull(inv, "Inventory must not be null"); inventory = inv; id = Bukkit.getScheduler().runTaskTimerAsynchronously(SlimefunPlugin.instance(), this, 0, UPDATE_INTERVAL).getTaskId(); } - public void add(int slot, MaterialChoice choice) { + public void add(int slot, @Nonnull MaterialChoice choice) { Validate.notNull(choice, "Cannot add a null RecipeChoice"); iterators.put(slot, new LoopIterator<>(choice.getChoices())); } - public void add(int slot, Tag tag) { + public void add(int slot, @Nonnull Tag tag) { Validate.notNull(tag, "Cannot add a null Tag"); iterators.put(slot, new LoopIterator<>(tag.getValues())); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/resources/StrangeNetherGoo.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/misc/StrangeNetherGoo.java similarity index 94% rename from src/main/java/io/github/thebusybiscuit/slimefun4/implementation/resources/StrangeNetherGoo.java rename to src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/misc/StrangeNetherGoo.java index a869f0127..eb6aa7716 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/resources/StrangeNetherGoo.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/misc/StrangeNetherGoo.java @@ -1,4 +1,4 @@ -package io.github.thebusybiscuit.slimefun4.implementation.resources; +package io.github.thebusybiscuit.slimefun4.implementation.items.misc; import org.bukkit.entity.Piglin; import org.bukkit.inventory.ItemStack; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/resources/SlimefunResource.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/resources/SlimefunResource.java index e09b82b58..fd10467fb 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/resources/SlimefunResource.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/resources/SlimefunResource.java @@ -1,5 +1,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.resources; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.apache.commons.lang.Validate; import org.bukkit.NamespacedKey; import org.bukkit.inventory.ItemStack; @@ -15,6 +18,7 @@ abstract class SlimefunResource implements GEOResource { private final int maxDeviation; private final boolean geoMiner; + @ParametersAreNonnullByDefault SlimefunResource(String key, String defaultName, ItemStack item, int maxDeviation, boolean geoMiner) { Validate.notNull(key, "NamespacedKey cannot be null!"); Validate.notNull(defaultName, "The default name cannot be null!"); @@ -28,16 +32,19 @@ abstract class SlimefunResource implements GEOResource { } @Override + @Nonnull public NamespacedKey getKey() { return key; } @Override + @Nonnull public String getName() { return defaultName; } @Override + @Nonnull public ItemStack getItem() { return item.clone(); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java index 36f227f0c..64df84bfc 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java @@ -3,6 +3,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.setup; import java.util.ArrayList; import java.util.List; +import javax.annotation.Nonnull; + import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.inventory.ItemStack; @@ -147,6 +149,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.items.misc.BasicCircuit import io.github.thebusybiscuit.slimefun4.implementation.items.misc.CoolantCell; import io.github.thebusybiscuit.slimefun4.implementation.items.misc.OrganicFertilizer; import io.github.thebusybiscuit.slimefun4.implementation.items.misc.OrganicFood; +import io.github.thebusybiscuit.slimefun4.implementation.items.misc.StrangeNetherGoo; import io.github.thebusybiscuit.slimefun4.implementation.items.misc.SyntheticEmerald; import io.github.thebusybiscuit.slimefun4.implementation.items.multiblocks.ArmorForge; import io.github.thebusybiscuit.slimefun4.implementation.items.multiblocks.AutomatedPanningMachine; @@ -185,7 +188,6 @@ import io.github.thebusybiscuit.slimefun4.implementation.items.weapons.IcyBow; import io.github.thebusybiscuit.slimefun4.implementation.items.weapons.SeismicAxe; import io.github.thebusybiscuit.slimefun4.implementation.items.weapons.SwordOfBeheading; import io.github.thebusybiscuit.slimefun4.implementation.items.weapons.VampireBlade; -import io.github.thebusybiscuit.slimefun4.implementation.resources.StrangeNetherGoo; import io.github.thebusybiscuit.slimefun4.utils.HeadTexture; import io.github.thebusybiscuit.slimefun4.utils.SlimefunUtils; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -226,7 +228,7 @@ public final class SlimefunItemSetup { private SlimefunItemSetup() {} - public static void setup(SlimefunPlugin plugin) { + public static void setup(@Nonnull SlimefunPlugin plugin) { if (registeredItems) { throw new UnsupportedOperationException("Slimefun Items can only be registered once!"); } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunItemStack.java b/src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunItemStack.java index 96df69a95..c8dfb8ed4 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunItemStack.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunItemStack.java @@ -8,6 +8,9 @@ import java.util.Locale; import java.util.Optional; import java.util.function.Consumer; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + import org.apache.commons.lang.Validate; import org.bukkit.ChatColor; import org.bukkit.Color; @@ -146,7 +149,7 @@ public class SlimefunItemStack extends CustomItem { setItemId(id); } - private void setItemId(String id) { + private void setItemId(@Nonnull String id) { Validate.notNull(id, "The Item id must never be null!"); Validate.isTrue(id.equals(id.toUpperCase(Locale.ROOT)), "Slimefun Item Ids must be uppercase! (e.g. 'MY_ITEM_ID')"); @@ -169,7 +172,8 @@ public class SlimefunItemStack extends CustomItem { * * @return The {@link SlimefunItem} id for this {@link SlimefunItemStack} */ - public String getItemId() { + @Nonnull + public final String getItemId() { return id; } @@ -179,6 +183,7 @@ public class SlimefunItemStack extends CustomItem { * * @return The {@link SlimefunItem} for this {@link SlimefunItemStack}, null if not found. */ + @Nullable public SlimefunItem getItem() { return SlimefunItem.getByID(id); } @@ -267,7 +272,11 @@ public class SlimefunItemStack extends CustomItem { return SkullItem.fromBase64(getTexture(id, texture)); } - private static String getTexture(String id, String texture) { + @Nonnull + private static String getTexture(@Nonnull String id, @Nonnull String texture) { + Validate.notNull(id, "The id cannot be null"); + Validate.notNull(texture, "The texture cannot be null"); + if (texture.startsWith("ey")) { return texture; }