From dd9962d3e2b2ce622d51c01d40740c5ae3a31f8a Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Thu, 3 Sep 2020 12:24:49 +0200 Subject: [PATCH] Small improvement, many annotations --- CHANGELOG.md | 1 + .../guide/BookSlimefunGuide.java | 15 +++ .../guide/CheatSheetSlimefunGuide.java | 9 ++ .../guide/ChestSlimefunGuide.java | 13 +++ .../implementation/items/RadioactiveItem.java | 4 + .../electric/AbstractEnergyProvider.java | 7 +- .../items/electric/EnergyRegulator.java | 5 +- .../items/electric/reactors/Reactor.java | 97 +++++++++++-------- .../listeners/AncientAltarListener.java | 28 ++++-- .../listeners/BackpackListener.java | 9 +- .../implementation/listeners/BeeListener.java | 4 +- .../listeners/BlockListener.java | 10 +- .../listeners/BlockPhysicsListener.java | 4 +- .../listeners/ButcherAndroidListener.java | 6 +- .../listeners/CargoNodeListener.java | 6 +- .../listeners/CoolerListener.java | 10 +- .../listeners/DeathpointListener.java | 4 +- .../listeners/DebugFishListener.java | 8 +- .../listeners/DispenserListener.java | 4 +- .../listeners/EnhancedFurnaceListener.java | 4 +- .../listeners/EntityInteractionListener.java | 4 +- .../listeners/ExplosionsListener.java | 4 +- .../listeners/FireworksListener.java | 4 +- .../listeners/GadgetsListener.java | 9 +- .../listeners/GrapplingHookEntity.java | 7 +- .../listeners/GrapplingHookListener.java | 11 ++- .../listeners/IronGolemListener.java | 4 +- .../listeners/ItemPickupListener.java | 4 +- .../listeners/MobDropListener.java | 7 +- .../listeners/MultiBlockListener.java | 14 ++- .../listeners/NetworkListener.java | 4 +- .../listeners/PiglinListener.java | 4 +- .../listeners/PlayerProfileListener.java | 4 +- .../listeners/SeismicAxeListener.java | 4 +- .../listeners/SlimefunBootsListener.java | 8 +- .../listeners/SlimefunBowListener.java | 5 +- .../listeners/SlimefunGuideListener.java | 7 +- .../SlimefunItemConsumeListener.java | 4 +- .../listeners/SlimefunItemListener.java | 9 +- .../listeners/SoulboundListener.java | 8 +- .../listeners/TalismanListener.java | 13 ++- .../listeners/TeleporterListener.java | 8 +- .../listeners/VampireBladeListener.java | 4 +- .../listeners/VanillaMachinesListener.java | 12 ++- .../listeners/VillagerTradingListener.java | 7 +- .../listeners/WitherListener.java | 4 +- .../listeners/WorldListener.java | 4 +- .../tasks/AncientAltarTask.java | 6 +- .../implementation/tasks/ArmorTask.java | 19 +++- .../implementation/tasks/JetBootsTask.java | 4 +- .../implementation/tasks/JetpackTask.java | 4 +- .../implementation/tasks/MagnetTask.java | 4 +- .../implementation/tasks/ParachuteTask.java | 4 +- .../implementation/tasks/PlayerTask.java | 4 +- .../tasks/SlimefunStartupTask.java | 4 +- .../implementation/tasks/TickerTask.java | 13 ++- 56 files changed, 358 insertions(+), 129 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51ab92717..67c83268f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,7 @@ * Performance improvements for energy networks * (API) Rewritten Block-Energy API * Removed "durability" setting from cargo nodes +* Small performance improvements for radiation #### Fixes * Fixed Programmable Androids rotating in the wrong direction diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/BookSlimefunGuide.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/BookSlimefunGuide.java index 8a4861141..79369acce 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/BookSlimefunGuide.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/BookSlimefunGuide.java @@ -8,6 +8,7 @@ import java.util.Locale; import org.bukkit.ChatColor; import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import io.github.thebusybiscuit.cscorelib2.chat.ChatColors; @@ -32,6 +33,20 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.api.Slimefun; +/** + * The {@link BookSlimefunGuide} is a {@link SlimefunGuideImplementation} which + * uses a {@link CustomBookInterface} to display the contents of the {@link SlimefunGuide}. + * {@link Player Players} have the option to choose this Written Book layout over the + * standard {@link Inventory} variant. + * + * @author TheBusyBiscuit + * + * @see SlimefunGuide + * @see SlimefunGuideImplementation + * @see ChestSlimefunGuide + * @see CheatSheetSlimefunGuide + * + */ public class BookSlimefunGuide implements SlimefunGuideImplementation { private final NamespacedKey guideSearch = new NamespacedKey(SlimefunPlugin.instance(), "search"); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/CheatSheetSlimefunGuide.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/CheatSheetSlimefunGuide.java index 861c50fa6..35f31305c 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/CheatSheetSlimefunGuide.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/CheatSheetSlimefunGuide.java @@ -2,13 +2,22 @@ package io.github.thebusybiscuit.slimefun4.implementation.guide; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.Recipe; import io.github.thebusybiscuit.slimefun4.api.player.PlayerProfile; import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuideLayout; import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils; import io.github.thebusybiscuit.slimefun4.utils.itemstack.SlimefunGuideItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +/** + * This is an admin-variant of the {@link ChestSlimefunGuide} which allows a {@link Player} + * to spawn in a {@link SlimefunItem} via click rather than showing their {@link Recipe}. + * + * @author TheBusyBiscuit + * + */ public class CheatSheetSlimefunGuide extends ChestSlimefunGuide { private final ItemStack item; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/ChestSlimefunGuide.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/ChestSlimefunGuide.java index 59471feba..33f3b0d16 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/ChestSlimefunGuide.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/ChestSlimefunGuide.java @@ -13,6 +13,7 @@ import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.Tag; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.Recipe; @@ -47,6 +48,18 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.api.Slimefun; +/** + * The {@link ChestSlimefunGuide} is the standard version of our {@link SlimefunGuide}. + * It uses an {@link Inventory} to display {@link SlimefunGuide} contents. + * + * @author TheBusyBiscuit + * + * @see SlimefunGuide + * @see SlimefunGuideImplementation + * @see BookSlimefunGuide + * @see CheatSheetSlimefunGuide + * + */ public class ChestSlimefunGuide implements SlimefunGuideImplementation { private static final int CATEGORY_SIZE = 36; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/RadioactiveItem.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/RadioactiveItem.java index 54f5d83e0..158b3101d 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/RadioactiveItem.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/RadioactiveItem.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.items; +import javax.annotation.Nonnull; + import org.bukkit.inventory.ItemStack; import io.github.thebusybiscuit.slimefun4.api.events.PlayerRightClickEvent; @@ -70,11 +72,13 @@ public class RadioactiveItem extends SlimefunItem implements Radioactive, NotPla addItemHandler(onRightClick()); } + @Nonnull private ItemUseHandler onRightClick() { return PlayerRightClickEvent::cancel; } @Override + @Nonnull public Radioactivity getRadioactivity() { return radioactivity; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/AbstractEnergyProvider.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/AbstractEnergyProvider.java index b1d334922..530a565f3 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/AbstractEnergyProvider.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/AbstractEnergyProvider.java @@ -5,6 +5,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import javax.annotation.Nonnull; + import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -50,6 +52,7 @@ public abstract class AbstractEnergyProvider extends SlimefunItem implements Inv * * @return The title of the {@link Inventory} of this {@link AbstractEnergyProvider} */ + @Nonnull public String getInventoryTitle() { return getItemName(); } @@ -62,6 +65,7 @@ public abstract class AbstractEnergyProvider extends SlimefunItem implements Inv * * @return The {@link ItemStack} to use as the progress bar */ + @Nonnull public abstract ItemStack getProgressBar(); /** @@ -81,10 +85,11 @@ public abstract class AbstractEnergyProvider extends SlimefunItem implements Inv return EnergyNetComponentType.GENERATOR; } - public void registerFuel(MachineFuel fuel) { + public void registerFuel(@Nonnull MachineFuel fuel) { fuelTypes.add(fuel); } + @Nonnull public Set getFuelTypes() { return fuelTypes; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/EnergyRegulator.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/EnergyRegulator.java index 4e3df3d14..d0415f6ae 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/EnergyRegulator.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/EnergyRegulator.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.electric; +import javax.annotation.Nonnull; + import org.bukkit.block.Block; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.inventory.ItemStack; @@ -36,6 +38,7 @@ public class EnergyRegulator extends SlimefunItem { }); } + @Nonnull private BlockPlaceHandler onPlace() { return new BlockPlaceHandler(false) { @@ -65,7 +68,7 @@ public class EnergyRegulator extends SlimefunItem { }); } - private void tick(Block b) { + private void tick(@Nonnull Block b) { EnergyNet network = EnergyNet.getNetworkFromLocationOrCreate(b.getLocation()); network.tick(b); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/reactors/Reactor.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/reactors/Reactor.java index 567ca034b..fa2f253b9 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/reactors/Reactor.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/reactors/Reactor.java @@ -6,6 +6,10 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ThreadLocalRandom; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -120,7 +124,7 @@ public abstract class Reactor extends AbstractEnergyProvider { registerDefaultFuelTypes(); } - protected void updateInventory(BlockMenu menu, Block b) { + protected void updateInventory(@Nonnull BlockMenu menu, @Nonnull Block b) { ReactorMode mode = getReactorMode(b.getLocation()); switch (mode) { @@ -165,40 +169,41 @@ public abstract class Reactor extends AbstractEnergyProvider { } } - private void constructMenu(BlockMenuPreset preset) { + private void constructMenu(@Nonnull BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler()); + preset.addItem(i, new CustomItem(Material.GRAY_STAINED_GLASS_PANE, " "), ChestMenuUtils.getEmptyClickHandler()); } for (int i : border_1) { - preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler()); + preset.addItem(i, new CustomItem(Material.LIME_STAINED_GLASS_PANE, " "), ChestMenuUtils.getEmptyClickHandler()); } for (int i : border_3) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler()); + preset.addItem(i, new CustomItem(Material.GREEN_STAINED_GLASS_PANE, " "), ChestMenuUtils.getEmptyClickHandler()); } - preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler()); + preset.addItem(22, new CustomItem(Material.BLACK_STAINED_GLASS_PANE, " "), ChestMenuUtils.getEmptyClickHandler()); preset.addItem(1, new CustomItem(getFuelIcon(), "&7Fuel Slot", "", "&fThis Slot accepts radioactive Fuel such as:", "&2Uranium &for &aNeptunium"), ChestMenuUtils.getEmptyClickHandler()); for (int i : border_2) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler()); + preset.addItem(i, new CustomItem(Material.CYAN_STAINED_GLASS_PANE, " "), ChestMenuUtils.getEmptyClickHandler()); } if (needsCooling()) { preset.addItem(7, new CustomItem(getCoolant(), "&bCoolant Slot", "", "&fThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode")); } else { - preset.addItem(7, new CustomItem(new ItemStack(Material.BARRIER), "&bCoolant Slot", "", "&fThis Slot accepts Coolant Cells")); + preset.addItem(7, new CustomItem(Material.BARRIER, "&bCoolant Slot", "", "&fThis Slot accepts Coolant Cells")); for (int i : border_4) { - preset.addItem(i, new CustomItem(new ItemStack(Material.BARRIER), "&cNo Coolant Required"), ChestMenuUtils.getEmptyClickHandler()); + preset.addItem(i, new CustomItem(Material.BARRIER, "&cNo Coolant Required"), ChestMenuUtils.getEmptyClickHandler()); } } } - protected ReactorMode getReactorMode(Location l) { + @Nonnull + protected ReactorMode getReactorMode(@Nonnull Location l) { ReactorMode mode = ReactorMode.GENERATOR; if (BlockStorage.hasBlockInfo(l) && BlockStorage.getLocationInfo(l, MODE).equals(ReactorMode.PRODUCTION.toString())) { @@ -208,7 +213,7 @@ public abstract class Reactor extends AbstractEnergyProvider { return mode; } - public abstract void extraTick(Location l); + public abstract void extraTick(@Nonnull Location l); /** * This method returns the {@link ItemStack} that is required to cool this {@link Reactor}. @@ -216,6 +221,7 @@ public abstract class Reactor extends AbstractEnergyProvider { * * @return The {@link ItemStack} required to cool this {@link Reactor} */ + @Nullable public abstract ItemStack getCoolant(); /** @@ -225,6 +231,7 @@ public abstract class Reactor extends AbstractEnergyProvider { * * @return The {@link ItemStack} used as the fuel icon for this {@link Reactor}. */ + @Nonnull public abstract ItemStack getFuelIcon(); /** @@ -247,6 +254,7 @@ public abstract class Reactor extends AbstractEnergyProvider { return new int[] { 19, 28, 37 }; } + @Nonnull public int[] getCoolantSlots() { return needsCooling() ? new int[] { 25, 34, 43 } : new int[0]; } @@ -274,33 +282,7 @@ public abstract class Reactor extends AbstractEnergyProvider { int timeleft = progress.get(l); if (timeleft > 0) { - int produced = getEnergyProduction(); - int charge = 0; - - if (data.contains("energy-charge")) { - charge = Integer.parseInt(data.getString("energy-charge")); - } - - int space = getCapacity() - charge; - - if (space >= produced || getReactorMode(l) != ReactorMode.GENERATOR) { - progress.put(l, timeleft - 1); - checkForWaterBlocks(l); - - ChestMenuUtils.updateProgressbar(inv, 22, timeleft, processing.get(l).getTicks(), getProgressBar()); - - if (needsCooling() && !hasEnoughCoolant(l, inv, accessPort, timeleft)) { - explosionsQueue.add(l); - return 0; - } - } - - if (space >= produced) { - return getEnergyProduction(); - } - else { - return 0; - } + return generateEnergy(l, data, inv, accessPort, timeleft); } else { createByproduct(l, inv, accessPort); @@ -313,6 +295,37 @@ public abstract class Reactor extends AbstractEnergyProvider { } } + private int generateEnergy(@Nonnull Location l, @Nonnull Config data, @Nonnull BlockMenu inv, @Nullable BlockMenu accessPort, int timeleft) { + int produced = getEnergyProduction(); + String energyData = data.getString("energy-charge"); + int charge = 0; + + if (energyData != null) { + charge = Integer.parseInt(energyData); + } + + int space = getCapacity() - charge; + + if (space >= produced || getReactorMode(l) != ReactorMode.GENERATOR) { + progress.put(l, timeleft - 1); + checkForWaterBlocks(l); + + ChestMenuUtils.updateProgressbar(inv, 22, timeleft, processing.get(l).getTicks(), getProgressBar()); + + if (needsCooling() && !hasEnoughCoolant(l, inv, accessPort, timeleft)) { + explosionsQueue.add(l); + return 0; + } + } + + if (space >= produced) { + return getEnergyProduction(); + } + else { + return 0; + } + } + @Override public boolean willExplode(Location l, Config data) { boolean explosion = explosionsQueue.contains(l); @@ -398,7 +411,7 @@ public abstract class Reactor extends AbstractEnergyProvider { * * @return Whether the {@link Reactor} was successfully cooled, if not it should explode */ - private boolean hasEnoughCoolant(Location reactor, BlockMenu menu, BlockMenu accessPort, int timeleft) { + private boolean hasEnoughCoolant(@Nonnull Location reactor, @Nonnull BlockMenu menu, @Nullable BlockMenu accessPort, int timeleft) { boolean requiresCoolant = (processing.get(reactor).getTicks() - timeleft) % COOLANT_DURATION == 0; if (requiresCoolant) { @@ -435,6 +448,7 @@ public abstract class Reactor extends AbstractEnergyProvider { return Math.round(((((COOLANT_DURATION - passed) * 100.0F) / COOLANT_DURATION) * 100.0F) / 100.0F); } + @ParametersAreNonnullByDefault private void restockFuel(BlockMenu menu, BlockMenu port) { for (int slot : getFuelSlots()) { for (MachineFuel fuelType : fuelTypes) { @@ -446,6 +460,8 @@ public abstract class Reactor extends AbstractEnergyProvider { } } + @Nullable + @ParametersAreNonnullByDefault private MachineFuel findFuel(BlockMenu menu, Map found) { for (MachineFuel fuel : fuelTypes) { for (int slot : getInputSlots()) { @@ -459,7 +475,8 @@ public abstract class Reactor extends AbstractEnergyProvider { return null; } - protected BlockMenu getAccessPort(Location l) { + @Nullable + protected BlockMenu getAccessPort(@Nonnull Location l) { Location port = new Location(l.getWorld(), l.getX(), l.getY() + 3, l.getZ()); if (BlockStorage.check(port, SlimefunItems.REACTOR_ACCESS_PORT.getItemId())) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/AncientAltarListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/AncientAltarListener.java index 0943816bb..414559673 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/AncientAltarListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/AncientAltarListener.java @@ -8,6 +8,9 @@ import java.util.Optional; import java.util.Set; import java.util.UUID; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; @@ -70,10 +73,12 @@ public class AncientAltarListener implements Listener { * * @return A {@link Set} of every {@link AncientAltar} currently in use */ + @Nonnull public Set getAltarsInUse() { return altarsInUse; } + @Nonnull public List getAltars() { return altars; } @@ -119,7 +124,7 @@ public class AncientAltarListener implements Listener { } } - private void usePedestal(Block pedestal, Player p) { + private void usePedestal(@Nonnull Block pedestal, @Nonnull Player p) { if (altarsInUse.contains(pedestal.getLocation())) { return; } @@ -158,7 +163,7 @@ public class AncientAltarListener implements Listener { } } - private void useAltar(Block altar, Player p) { + private void useAltar(@Nonnull Block altar, @Nonnull Player p) { if (!SlimefunPlugin.getProtectionManager().hasPermission(p, altar, ProtectableAction.ACCESS_INVENTORIES)) { SlimefunPlugin.getLocalization().sendMessage(p, "inventory.no-access", true); return; @@ -198,6 +203,7 @@ public class AncientAltarListener implements Listener { } } + @ParametersAreNonnullByDefault private void startRitual(Player p, Block b, List pedestals, ItemStack catalyst) { List input = new ArrayList<>(); @@ -266,7 +272,8 @@ public class AncientAltarListener implements Listener { } } - private List getPedestals(Block altar) { + @Nonnull + private List getPedestals(@Nonnull Block altar) { List list = new ArrayList<>(); if (BlockStorage.check(altar.getRelative(2, 0, -2), pedestalItem.getID())) { @@ -297,15 +304,16 @@ public class AncientAltarListener implements Listener { return list; } - public Optional getRecipeOutput(ItemStack catalyst, List input) { - if (input.size() != 8) { + @Nonnull + public Optional getRecipeOutput(@Nonnull ItemStack catalyst, @Nonnull List inputs) { + if (inputs.size() != 8) { return Optional.empty(); } ItemStackWrapper wrapper = new ItemStackWrapper(catalyst); - List items = ItemStackWrapper.wrapList(input); + List items = ItemStackWrapper.wrapList(inputs); - if (SlimefunUtils.isItemSimilar(wrapper, SlimefunItems.BROKEN_SPAWNER, false)) { + if (SlimefunUtils.isItemSimilar(wrapper, SlimefunItems.BROKEN_SPAWNER, false, false)) { if (!checkRecipe(SlimefunItems.BROKEN_SPAWNER, items).isPresent()) { return Optional.empty(); } @@ -320,7 +328,8 @@ public class AncientAltarListener implements Listener { return checkRecipe(wrapper, items); } - private Optional checkRecipe(ItemStack catalyst, List items) { + @Nonnull + private Optional checkRecipe(@Nonnull ItemStack catalyst, @Nonnull List items) { for (AltarRecipe recipe : altarItem.getRecipes()) { if (SlimefunUtils.isItemSimilar(catalyst, recipe.getCatalyst(), true)) { Optional optional = checkPedestals(items, recipe); @@ -334,7 +343,8 @@ public class AncientAltarListener implements Listener { return Optional.empty(); } - private Optional checkPedestals(List items, AltarRecipe recipe) { + @Nonnull + private Optional checkPedestals(@Nonnull List items, @Nonnull AltarRecipe recipe) { for (int i = 0; i < 8; i++) { if (SlimefunUtils.isItemSimilar(items.get(i), recipe.getInput().get(0), true)) { for (int j = 1; j < 8; j++) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BackpackListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BackpackListener.java index a9139f9fe..d971cfdef 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BackpackListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BackpackListener.java @@ -5,6 +5,9 @@ import java.util.List; import java.util.Map; import java.util.UUID; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + import org.apache.commons.lang.Validate; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -48,7 +51,7 @@ public class BackpackListener implements Listener { private final Map backpacks = new HashMap<>(); - public void register(SlimefunPlugin plugin) { + public void register(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -99,7 +102,7 @@ public class BackpackListener implements Listener { } } - private boolean isAllowed(SlimefunBackpack backpack, ItemStack item) { + private boolean isAllowed(@Nonnull SlimefunBackpack backpack, @Nullable ItemStack item) { if (item == null || item.getType() == Material.AIR) { return true; } @@ -154,7 +157,7 @@ public class BackpackListener implements Listener { * @param id * The id of this backpack */ - public void setBackpackId(OfflinePlayer backpackOwner, ItemStack item, int line, int id) { + public void setBackpackId(@Nonnull OfflinePlayer backpackOwner, @Nonnull ItemStack item, int line, int id) { Validate.notNull(backpackOwner, "Backpacks must have an owner!"); Validate.notNull(item, "Cannot set the id onto null!"); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BeeListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BeeListener.java index 92577900d..1bd9b6c92 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BeeListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BeeListener.java @@ -2,6 +2,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.Optional; +import javax.annotation.Nonnull; + import org.bukkit.entity.Bee; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -23,7 +25,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; */ public class BeeListener implements Listener { - public BeeListener(SlimefunPlugin plugin) { + public BeeListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java index 81a9f876e..f01d2a22b 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java @@ -8,6 +8,10 @@ import java.util.Random; import java.util.Set; import java.util.concurrent.ThreadLocalRandom; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.Material; import org.bukkit.Tag; import org.bukkit.block.Block; @@ -48,7 +52,7 @@ public class BlockListener implements Listener { // Materials that require a Block under it, e.g. Pressure Plates private final Set sensitiveMaterials = EnumSet.noneOf(Material.class); - public BlockListener(SlimefunPlugin plugin) { + public BlockListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); sensitiveMaterials.add(Material.CAKE); @@ -152,6 +156,7 @@ public class BlockListener implements Listener { } } + @ParametersAreNonnullByDefault private void dropItems(BlockBreakEvent e, List drops) { if (!drops.isEmpty()) { e.getBlock().setType(Material.AIR); @@ -176,6 +181,7 @@ public class BlockListener implements Listener { * @param b * The {@link Block} that was broken */ + @ParametersAreNonnullByDefault private void checkForSensitiveBlockAbove(Player p, Block b) { Block blockAbove = b.getRelative(BlockFace.UP); @@ -199,7 +205,7 @@ public class BlockListener implements Listener { } } - private int getBonusDropsWithFortune(ItemStack item, Block b) { + private int getBonusDropsWithFortune(@Nullable ItemStack item, @Nonnull Block b) { int fortune = 1; if (item != null && item.getEnchantments().containsKey(Enchantment.LOOT_BONUS_BLOCKS) && !item.getEnchantments().containsKey(Enchantment.SILK_TOUCH)) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockPhysicsListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockPhysicsListener.java index 51a0018ec..a1874ad55 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockPhysicsListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockPhysicsListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Tag; @@ -34,7 +36,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; */ public class BlockPhysicsListener implements Listener { - public BlockPhysicsListener(SlimefunPlugin plugin) { + public BlockPhysicsListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ButcherAndroidListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ButcherAndroidListener.java index 78dda0ec3..6e00d584e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ButcherAndroidListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ButcherAndroidListener.java @@ -5,6 +5,9 @@ import java.util.List; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -33,7 +36,7 @@ public class ButcherAndroidListener implements Listener { private static final String METADATA_KEY = "android_killer"; - public ButcherAndroidListener(SlimefunPlugin plugin) { + public ButcherAndroidListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -74,6 +77,7 @@ public class ButcherAndroidListener implements Listener { * @param entityType * The {@link EntityType} of the killed entity */ + @ParametersAreNonnullByDefault private void addExtraDrops(List drops, EntityType entityType) { Random random = ThreadLocalRandom.current(); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/CargoNodeListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/CargoNodeListener.java index ae00e218a..9f1528d04 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/CargoNodeListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/CargoNodeListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; @@ -20,7 +22,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; */ public class CargoNodeListener implements Listener { - public CargoNodeListener(SlimefunPlugin plugin) { + public CargoNodeListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -32,7 +34,7 @@ public class CargoNodeListener implements Listener { } } - private boolean isCargoNode(ItemStack item) { + private boolean isCargoNode(@Nonnull ItemStack item) { if (SlimefunPlugin.getRegistry().isBackwardsCompatible()) { ItemStackWrapper wrapper = new ItemStackWrapper(item); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/CoolerListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/CoolerListener.java index 141659a7c..fa4becf8a 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/CoolerListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/CoolerListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; @@ -35,7 +37,7 @@ public class CoolerListener implements Listener { private final Cooler cooler; - public CoolerListener(SlimefunPlugin plugin, Cooler cooler) { + public CoolerListener(@Nonnull SlimefunPlugin plugin, @Nonnull Cooler cooler) { plugin.getServer().getPluginManager().registerEvents(this, plugin); this.cooler = cooler; @@ -65,7 +67,7 @@ public class CoolerListener implements Listener { } } - private void checkAndConsume(Player p) { + private void checkAndConsume(@Nonnull Player p) { for (ItemStack item : p.getInventory().getContents()) { if (cooler.isItem(item)) { if (Slimefun.hasUnlocked(p, cooler, true)) { @@ -87,7 +89,7 @@ public class CoolerListener implements Listener { * @param cooler * The {@link Cooler} {@link ItemStack} to take the {@link Juice} from */ - private void takeJuiceFromCooler(Player p, ItemStack cooler) { + private void takeJuiceFromCooler(@Nonnull Player p, @Nonnull ItemStack cooler) { PlayerProfile.getBackpack(cooler, backpack -> { if (backpack != null) { Slimefun.runSync(() -> consumeJuice(p, backpack)); @@ -95,7 +97,7 @@ public class CoolerListener implements Listener { }); } - private boolean consumeJuice(Player p, PlayerBackpack backpack) { + private boolean consumeJuice(@Nonnull Player p, @Nonnull PlayerBackpack backpack) { Inventory inv = backpack.getInventory(); int slot = -1; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DeathpointListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DeathpointListener.java index d1f7cc8cb..572aaa4b2 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DeathpointListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DeathpointListener.java @@ -4,6 +4,8 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Locale; +import javax.annotation.Nonnull; + import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -25,7 +27,7 @@ public class DeathpointListener implements Listener { private final DateTimeFormatter format = DateTimeFormatter.ofPattern("(MMM dd, yyyy @ hh:mm)", Locale.ROOT); - public DeathpointListener(SlimefunPlugin plugin) { + public DeathpointListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DebugFishListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DebugFishListener.java index 66ebd1bb8..b88085838 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DebugFishListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DebugFishListener.java @@ -2,6 +2,9 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.logging.Level; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -39,7 +42,7 @@ public class DebugFishListener implements Listener { private final String greenCheckmark; private final String redCross; - public DebugFishListener(SlimefunPlugin plugin) { + public DebugFishListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); greenCheckmark = "&2\u2714"; @@ -71,6 +74,7 @@ public class DebugFishListener implements Listener { } } + @ParametersAreNonnullByDefault private void onLeftClick(Player p, Block b, PlayerInteractEvent e) { if (p.isSneaking()) { if (BlockStorage.hasBlockInfo(b)) { @@ -82,6 +86,7 @@ public class DebugFishListener implements Listener { } } + @ParametersAreNonnullByDefault private void onRightClick(Player p, Block b, BlockFace face) { if (p.isSneaking()) { Block block = b.getRelative(face); @@ -98,6 +103,7 @@ public class DebugFishListener implements Listener { } } + @ParametersAreNonnullByDefault private void sendInfo(Player p, Block b) { SlimefunItem item = BlockStorage.check(b); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DispenserListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DispenserListener.java index 75c9f60d3..0fada4986 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DispenserListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/DispenserListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -28,7 +30,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; */ public class DispenserListener implements Listener { - public DispenserListener(SlimefunPlugin plugin) { + public DispenserListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java index d4e94d139..6660b96af 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java @@ -2,6 +2,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.Optional; +import javax.annotation.Nonnull; + import org.bukkit.Material; import org.bukkit.block.BlockState; import org.bukkit.block.Furnace; @@ -30,7 +32,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; */ public class EnhancedFurnaceListener implements Listener { - public EnhancedFurnaceListener(SlimefunPlugin plugin) { + public EnhancedFurnaceListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EntityInteractionListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EntityInteractionListener.java index 0372b850d..f8fcd8e86 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EntityInteractionListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EntityInteractionListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -23,7 +25,7 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; */ public class EntityInteractionListener implements Listener { - public EntityInteractionListener(SlimefunPlugin plugin) { + public EntityInteractionListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ExplosionsListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ExplosionsListener.java index 0306e8d0d..854e04fcb 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ExplosionsListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ExplosionsListener.java @@ -2,6 +2,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.Iterator; +import javax.annotation.Nonnull; + import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.event.EventHandler; @@ -18,7 +20,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; public class ExplosionsListener implements Listener { - public ExplosionsListener(SlimefunPlugin plugin) { + public ExplosionsListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/FireworksListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/FireworksListener.java index 8bc57ae32..99e523b71 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/FireworksListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/FireworksListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.ChatColor; import org.bukkit.entity.Firework; import org.bukkit.event.EventHandler; @@ -11,7 +13,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; public class FireworksListener implements Listener { - public FireworksListener(SlimefunPlugin plugin) { + public FireworksListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GadgetsListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GadgetsListener.java index 9ba07c781..789dbc376 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GadgetsListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GadgetsListener.java @@ -1,5 +1,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -34,7 +37,7 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; */ public class GadgetsListener implements Listener { - public GadgetsListener(SlimefunPlugin plugin) { + public GadgetsListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -63,7 +66,7 @@ public class GadgetsListener implements Listener { } } - private void handleChestplate(Player p, SlimefunItem chestplate) { + private void handleChestplate(@Nonnull Player p, @Nullable SlimefunItem chestplate) { if (chestplate == null || !Slimefun.hasUnlocked(p, chestplate, true)) { return; } @@ -80,7 +83,7 @@ public class GadgetsListener implements Listener { } } - private void handleBoots(Player p, SlimefunItem boots) { + private void handleBoots(@Nonnull Player p, @Nullable SlimefunItem boots) { if (boots instanceof JetBoots && Slimefun.hasUnlocked(p, boots, true)) { double speed = ((JetBoots) boots).getSpeed(); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GrapplingHookEntity.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GrapplingHookEntity.java index 86661d9ff..ee99817e5 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GrapplingHookEntity.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GrapplingHookEntity.java @@ -1,5 +1,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.Arrow; @@ -16,17 +19,19 @@ final class GrapplingHookEntity { private final Arrow arrow; private final Entity leashTarget; + @ParametersAreNonnullByDefault GrapplingHookEntity(Player p, Arrow arrow, Entity leashTarget, boolean dropItem) { this.arrow = arrow; this.leashTarget = leashTarget; this.dropItem = p.getGameMode() != GameMode.CREATIVE && dropItem; } + @Nonnull public Arrow getArrow() { return arrow; } - public void drop(Location l) { + public void drop(@Nonnull Location l) { if (dropItem) { Item item = l.getWorld().dropItem(l, SlimefunItems.GRAPPLING_HOOK.clone()); item.setPickupDelay(16); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GrapplingHookListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GrapplingHookListener.java index f71d7bb7f..f44f8c98f 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GrapplingHookListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/GrapplingHookListener.java @@ -6,6 +6,10 @@ import java.util.Map; import java.util.Set; import java.util.UUID; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.Location; import org.bukkit.entity.Arrow; import org.bukkit.entity.Bat; @@ -43,7 +47,7 @@ public class GrapplingHookListener implements Listener { private final Map activeHooks = new HashMap<>(); private final Set invulnerability = new HashSet<>(); - public void register(SlimefunPlugin plugin, GrapplingHook grapplingHook) { + public void register(@Nonnull SlimefunPlugin plugin, @Nonnull GrapplingHook grapplingHook) { plugin.getServer().getPluginManager().registerEvents(this, plugin); this.grapplingHook = grapplingHook; @@ -133,7 +137,7 @@ public class GrapplingHookListener implements Listener { } } - private void handleGrapplingHook(Arrow arrow) { + private void handleGrapplingHook(@Nullable Arrow arrow) { if (arrow != null && arrow.isValid() && arrow.getShooter() instanceof Player) { Player p = (Player) arrow.getShooter(); GrapplingHookEntity hook = activeHooks.get(p.getUniqueId()); @@ -175,10 +179,11 @@ public class GrapplingHookListener implements Listener { } } - public boolean isGrappling(UUID uuid) { + public boolean isGrappling(@Nonnull UUID uuid) { return activeHooks.containsKey(uuid); } + @ParametersAreNonnullByDefault public void addGrapplingHook(Player p, Arrow arrow, Bat bat, boolean dropItem, long despawnTicks) { GrapplingHookEntity hook = new GrapplingHookEntity(p, arrow, bat, dropItem); UUID uuid = p.getUniqueId(); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/IronGolemListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/IronGolemListener.java index cfdcd315e..5429251fa 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/IronGolemListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/IronGolemListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.Material; import org.bukkit.entity.EntityType; import org.bukkit.entity.IronGolem; @@ -24,7 +26,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; */ public class IronGolemListener implements Listener { - public IronGolemListener(SlimefunPlugin plugin) { + public IronGolemListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ItemPickupListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ItemPickupListener.java index bf465bc1a..dfe75b720 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ItemPickupListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/ItemPickupListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityPickupItemEvent; @@ -17,7 +19,7 @@ import io.github.thebusybiscuit.slimefun4.utils.SlimefunUtils; */ public class ItemPickupListener implements Listener { - public ItemPickupListener(SlimefunPlugin plugin) { + public ItemPickupListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/MobDropListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/MobDropListener.java index ad90481bd..d3007e30a 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/MobDropListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/MobDropListener.java @@ -3,6 +3,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.Set; import java.util.concurrent.ThreadLocalRandom; +import javax.annotation.Nonnull; + import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -30,7 +32,7 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; */ public class MobDropListener implements Listener { - public MobDropListener(SlimefunPlugin plugin) { + public MobDropListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -60,14 +62,13 @@ public class MobDropListener implements Listener { } } - private boolean canDrop(Player p, ItemStack item) { + private boolean canDrop(@Nonnull Player p, @Nonnull ItemStack item) { SlimefunItem sfi = SlimefunItem.getByItem(item); if (sfi == null) { return true; } else if (Slimefun.hasUnlocked(p, sfi, true)) { - if (sfi instanceof RandomMobDrop) { int random = ThreadLocalRandom.current().nextInt(100); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/MultiBlockListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/MultiBlockListener.java index c97cac228..d684a274b 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/MultiBlockListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/MultiBlockListener.java @@ -2,6 +2,10 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.LinkedList; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Tag; @@ -32,7 +36,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; */ public class MultiBlockListener implements Listener { - public MultiBlockListener(SlimefunPlugin plugin) { + public MultiBlockListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -63,6 +67,7 @@ public class MultiBlockListener implements Listener { } } + @ParametersAreNonnullByDefault private boolean compareMaterials(Block b, Material[] blocks, boolean onlyTwoWay) { if (!compareMaterialsVertical(b, blocks[1], blocks[4], blocks[7])) { return false; @@ -79,12 +84,15 @@ public class MultiBlockListener implements Listener { return false; } - private boolean compareMaterialsVertical(Block b, Material top, Material center, Material bottom) { + private boolean compareMaterialsVertical(@Nonnull Block b, @Nullable Material top, @Nullable Material center, @Nullable Material bottom) { return (center == null || equals(b.getType(), center)) && (top == null || equals(b.getRelative(BlockFace.UP).getType(), top)) && (bottom == null || equals(b.getRelative(BlockFace.DOWN).getType(), bottom)); } + @ParametersAreNonnullByDefault private boolean equals(Material a, Material b) { - if (a == b) return true; + if (a == b) { + return true; + } for (Tag tag : MultiBlock.getSupportedTags()) { if (tag.isTagged(a) && tag.isTagged(b)) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/NetworkListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/NetworkListener.java index a8c531e2e..98b55adfb 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/NetworkListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/NetworkListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -23,7 +25,7 @@ public class NetworkListener implements Listener { private final NetworkManager manager; - public NetworkListener(SlimefunPlugin plugin, NetworkManager manager) { + public NetworkListener(@Nonnull SlimefunPlugin plugin, @Nonnull NetworkManager manager) { this.manager = manager; plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PiglinListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PiglinListener.java index ba420d73b..4e191fc6f 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PiglinListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PiglinListener.java @@ -3,6 +3,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.Set; import java.util.concurrent.ThreadLocalRandom; +import javax.annotation.Nonnull; + import org.bukkit.Material; import org.bukkit.entity.EntityType; import org.bukkit.entity.Piglin; @@ -31,7 +33,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; */ public class PiglinListener implements Listener { - public PiglinListener(SlimefunPlugin plugin) { + public PiglinListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PlayerProfileListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PlayerProfileListener.java index 7911b117e..77eb2bca8 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PlayerProfileListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PlayerProfileListener.java @@ -2,6 +2,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.Optional; +import javax.annotation.Nonnull; + import org.bukkit.Server; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -22,7 +24,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; */ public class PlayerProfileListener implements Listener { - public PlayerProfileListener(SlimefunPlugin plugin) { + public PlayerProfileListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SeismicAxeListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SeismicAxeListener.java index 50b3e6384..b84e88ecb 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SeismicAxeListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SeismicAxeListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.entity.EntityType; import org.bukkit.entity.FallingBlock; import org.bukkit.event.EventHandler; @@ -22,7 +24,7 @@ public class SeismicAxeListener implements Listener { private final SeismicAxe seismicAxe; - public SeismicAxeListener(SlimefunPlugin plugin, SeismicAxe seismicAxe) { + public SeismicAxeListener(@Nonnull SlimefunPlugin plugin, @Nonnull SeismicAxe seismicAxe) { plugin.getServer().getPluginManager().registerEvents(this, plugin); this.seismicAxe = seismicAxe; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunBootsListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunBootsListener.java index 1da2a6e5e..3353e30a9 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunBootsListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunBootsListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.EnderPearl; @@ -31,7 +33,7 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; */ public class SlimefunBootsListener implements Listener { - public SlimefunBootsListener(SlimefunPlugin plugin) { + public SlimefunBootsListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -51,7 +53,7 @@ public class SlimefunBootsListener implements Listener { } } - private void onFallDamage(EntityDamageEvent e) { + private void onFallDamage(@Nonnull EntityDamageEvent e) { Player p = (Player) e.getEntity(); SlimefunItem boots = SlimefunItem.getByItem(p.getInventory().getBoots()); @@ -71,7 +73,7 @@ public class SlimefunBootsListener implements Listener { } } - private void onEnderPearlDamage(EntityDamageEvent e) { + private void onEnderPearlDamage(@Nonnull EntityDamageEvent e) { Player p = (Player) e.getEntity(); SlimefunItem boots = SlimefunItem.getByItem(p.getInventory().getBoots()); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunBowListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunBowListener.java index cb45f387b..7d6c8e9ef 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunBowListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunBowListener.java @@ -4,6 +4,8 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; +import javax.annotation.Nonnull; + import org.bukkit.entity.Arrow; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; @@ -34,7 +36,7 @@ public class SlimefunBowListener implements Listener { private final Map projectiles = new HashMap<>(); - public void register(SlimefunPlugin plugin) { + public void register(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -44,6 +46,7 @@ public class SlimefunBowListener implements Listener { * * @return A {@link HashMap} with all actively tracked {@link Arrow Arrows} */ + @Nonnull public Map getProjectileData() { return projectiles; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunGuideListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunGuideListener.java index 490fc44a9..879a10025 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunGuideListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunGuideListener.java @@ -1,5 +1,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.entity.Player; import org.bukkit.event.Event.Result; import org.bukkit.event.EventHandler; @@ -19,7 +22,7 @@ public class SlimefunGuideListener implements Listener { private final boolean giveOnFirstJoin; - public SlimefunGuideListener(SlimefunPlugin plugin, boolean giveOnFirstJoin) { + public SlimefunGuideListener(@Nonnull SlimefunPlugin plugin, boolean giveOnFirstJoin) { this.giveOnFirstJoin = giveOnFirstJoin; plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -65,6 +68,8 @@ public class SlimefunGuideListener implements Listener { } } + @Nonnull + @ParametersAreNonnullByDefault private Result openGuide(PlayerRightClickEvent e, SlimefunGuideLayout layout) { Player p = e.getPlayer(); ItemStack item = e.getItem(); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemConsumeListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemConsumeListener.java index e56acdcfb..c671f44c8 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemConsumeListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemConsumeListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -20,7 +22,7 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; */ public class SlimefunItemConsumeListener implements Listener { - public SlimefunItemConsumeListener(SlimefunPlugin plugin) { + public SlimefunItemConsumeListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemListener.java index 523fa7939..9102a433e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemListener.java @@ -2,6 +2,9 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.Optional; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -30,7 +33,7 @@ import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; public class SlimefunItemListener implements Listener { - public SlimefunItemListener(SlimefunPlugin plugin) { + public SlimefunItemListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -64,6 +67,8 @@ public class SlimefunItemListener implements Listener { } } + @Nonnull + @ParametersAreNonnullByDefault private boolean rightClickItem(PlayerInteractEvent e, PlayerRightClickEvent event, boolean defaultValue) { Optional optional = event.getSlimefunItem(); @@ -79,6 +84,7 @@ public class SlimefunItemListener implements Listener { return defaultValue; } + @ParametersAreNonnullByDefault private boolean rightClickBlock(PlayerInteractEvent e, PlayerRightClickEvent event) { Optional optional = event.getSlimefunBlock(); @@ -104,6 +110,7 @@ public class SlimefunItemListener implements Listener { return true; } + @ParametersAreNonnullByDefault private void openInventory(Player p, String id, PlayerInteractEvent e, PlayerRightClickEvent event) { if (!p.isSneaking() || Material.AIR == event.getItem().getType()) { e.setCancelled(true); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SoulboundListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SoulboundListener.java index af78211b5..44da98b2e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SoulboundListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SoulboundListener.java @@ -5,6 +5,9 @@ import java.util.Iterator; import java.util.Map; import java.util.UUID; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -19,7 +22,7 @@ public class SoulboundListener implements Listener { private final Map> soulbound = new HashMap<>(); - public SoulboundListener(SlimefunPlugin plugin) { + public SoulboundListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -52,12 +55,13 @@ public class SoulboundListener implements Listener { retrieveItems(e.getPlayer()); } + @ParametersAreNonnullByDefault private void storeItem(UUID uuid, int slot, ItemStack item) { Map items = soulbound.computeIfAbsent(uuid, uid -> new HashMap<>()); items.put(slot, item); } - private void retrieveItems(Player p) { + private void retrieveItems(@Nonnull Player p) { Map items = soulbound.remove(p.getUniqueId()); if (items != null) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java index 1b6256776..e757d2872 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java @@ -7,6 +7,9 @@ import java.util.Random; import java.util.Set; import java.util.concurrent.ThreadLocalRandom; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; @@ -48,7 +51,7 @@ public class TalismanListener implements Listener { private final int[] armorSlots = { 39, 38, 37, 36 }; - public TalismanListener(SlimefunPlugin plugin) { + public TalismanListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -82,7 +85,7 @@ public class TalismanListener implements Listener { } } - private void onProjectileDamage(EntityDamageByEntityEvent e) { + private void onProjectileDamage(@Nonnull EntityDamageByEntityEvent e) { if (e.getDamager() instanceof Projectile && !(e.getDamager() instanceof Trident)) { Projectile projectile = (Projectile) e.getDamager(); @@ -102,7 +105,7 @@ public class TalismanListener implements Listener { * @param projectile * The {@link Projectile} that hit this {@link Player} */ - private void returnProjectile(Player p, Projectile projectile) { + private void returnProjectile(@Nonnull Player p, @Nonnull Projectile projectile) { Vector direction = p.getEyeLocation().getDirection().multiply(2.0); Location loc = p.getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()); @@ -141,6 +144,8 @@ public class TalismanListener implements Listener { } } + @Nonnull + @ParametersAreNonnullByDefault private Collection getExtraDrops(LivingEntity entity, Collection drops) { List items = new ArrayList<>(drops); @@ -269,7 +274,7 @@ public class TalismanListener implements Listener { } } - private int getAmountWithFortune(Material type, int fortuneLevel) { + private int getAmountWithFortune(@Nonnull Material type, int fortuneLevel) { if (fortuneLevel > 0) { Random random = ThreadLocalRandom.current(); int amount = random.nextInt(fortuneLevel + 2) - 1; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TeleporterListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TeleporterListener.java index cc2bd0e98..c053b1a44 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TeleporterListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TeleporterListener.java @@ -2,6 +2,9 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.UUID; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.event.EventHandler; @@ -21,7 +24,7 @@ public class TeleporterListener implements Listener { private final BlockFace[] faces = { BlockFace.NORTH, BlockFace.NORTH_EAST, BlockFace.EAST, BlockFace.SOUTH_EAST, BlockFace.SOUTH, BlockFace.SOUTH_WEST, BlockFace.WEST, BlockFace.NORTH_WEST }; - public TeleporterListener(SlimefunPlugin plugin) { + public TeleporterListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -50,11 +53,12 @@ public class TeleporterListener implements Listener { } } + @ParametersAreNonnullByDefault private boolean isTeleporterPad(String id, Block b, UUID uuid) { return id.equals(SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED.getItemId()) || (id.equals(SlimefunItems.GPS_ACTIVATION_DEVICE_PERSONAL.getItemId()) && BlockStorage.getLocationInfo(b.getLocation(), "owner").equals(uuid.toString())); } - private boolean checkForPylons(Block teleporter) { + private boolean checkForPylons(@Nonnull Block teleporter) { for (BlockFace face : faces) { if (!BlockStorage.check(teleporter.getRelative(face), SlimefunItems.GPS_TELEPORTER_PYLON.getItemId())) { return false; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VampireBladeListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VampireBladeListener.java index 1fdfe5d89..877832c8f 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VampireBladeListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VampireBladeListener.java @@ -2,6 +2,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.concurrent.ThreadLocalRandom; +import javax.annotation.Nonnull; + import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -26,7 +28,7 @@ public class VampireBladeListener implements Listener { private final VampireBlade blade; - public VampireBladeListener(SlimefunPlugin plugin, VampireBlade blade) { + public VampireBladeListener(@Nonnull SlimefunPlugin plugin, @Nonnull VampireBlade blade) { plugin.getServer().getPluginManager().registerEvents(this, plugin); this.blade = blade; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VanillaMachinesListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VanillaMachinesListener.java index bdb8d367f..e9013fa04 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VanillaMachinesListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VanillaMachinesListener.java @@ -1,5 +1,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + import org.bukkit.block.BrewingStand; import org.bukkit.entity.Player; import org.bukkit.event.Event.Result; @@ -31,7 +34,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; */ public class VanillaMachinesListener implements Listener { - public VanillaMachinesListener(SlimefunPlugin plugin) { + public VanillaMachinesListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -107,7 +110,8 @@ public class VanillaMachinesListener implements Listener { if (clickedInventory.getType() == InventoryType.BREWING) { e.setCancelled(isUnallowed(SlimefunItem.getByItem(e.getCursor()))); - } else { + } + else { e.setCancelled(isUnallowed(SlimefunItem.getByItem(e.getCurrentItem()))); } @@ -117,7 +121,7 @@ public class VanillaMachinesListener implements Listener { } } - private boolean checkForUnallowedItems(ItemStack item1, ItemStack item2) { + private boolean checkForUnallowedItems(@Nullable ItemStack item1, @Nullable ItemStack item2) { if (SlimefunGuide.isGuideItem(item1) || SlimefunGuide.isGuideItem(item2)) { return true; } @@ -133,7 +137,7 @@ public class VanillaMachinesListener implements Listener { return false; } - private boolean isUnallowed(SlimefunItem item) { + private boolean isUnallowed(@Nullable SlimefunItem item) { return item != null && !(item instanceof VanillaItem) && !item.isDisabled(); } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VillagerTradingListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VillagerTradingListener.java index 2f199a217..7f8dba7a0 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VillagerTradingListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/VillagerTradingListener.java @@ -1,5 +1,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + import org.bukkit.entity.Player; import org.bukkit.event.Event.Result; import org.bukkit.event.EventHandler; @@ -23,7 +26,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; */ public class VillagerTradingListener implements Listener { - public VillagerTradingListener(SlimefunPlugin plugin) { + public VillagerTradingListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -51,7 +54,7 @@ public class VillagerTradingListener implements Listener { } } - private boolean isUnallowed(SlimefunItem item) { + private boolean isUnallowed(@Nullable SlimefunItem item) { return item != null && !(item instanceof VanillaItem) && !(item instanceof SyntheticEmerald) && !item.isDisabled(); } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/WitherListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/WitherListener.java index 0e8eb526d..998f6dbdd 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/WitherListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/WitherListener.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import javax.annotation.Nonnull; + import org.bukkit.entity.EntityType; import org.bukkit.entity.Wither; import org.bukkit.event.EventHandler; @@ -23,7 +25,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; */ public class WitherListener implements Listener { - public WitherListener(SlimefunPlugin plugin) { + public WitherListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/WorldListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/WorldListener.java index 1e4617fae..0e4ffecec 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/WorldListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/WorldListener.java @@ -2,6 +2,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; import java.util.logging.Level; +import javax.annotation.Nonnull; + import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.world.WorldLoadEvent; @@ -13,7 +15,7 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; public class WorldListener implements Listener { - public WorldListener(SlimefunPlugin plugin) { + public WorldListener(@Nonnull SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/AncientAltarTask.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/AncientAltarTask.java index d0016faf5..b3615365c 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/AncientAltarTask.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/AncientAltarTask.java @@ -7,6 +7,9 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.Bukkit; import org.bukkit.Effect; import org.bukkit.Location; @@ -57,6 +60,7 @@ public class AncientAltarTask implements Runnable { private int stage; private final Player player; + @ParametersAreNonnullByDefault public AncientAltarTask(AncientAltarListener listener, Block altar, int speed, ItemStack output, List pedestals, List items, Player player) { this.listener = listener; this.dropLocation = altar.getLocation().add(0.5, 1.3, 0.5); @@ -122,7 +126,7 @@ public class AncientAltarTask implements Runnable { } } - private void checkPedestal(Block pedestal) { + private void checkPedestal(@Nonnull Block pedestal) { Optional item = pedestalItem.getPlacedItem(pedestal); if (!item.isPresent() || positionLock.remove(item.get()) == null) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/ArmorTask.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/ArmorTask.java index 7d982ba07..d4188abf4 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/ArmorTask.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/ArmorTask.java @@ -4,7 +4,12 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.Bukkit; +import org.bukkit.Material; import org.bukkit.World; import org.bukkit.World.Environment; import org.bukkit.entity.Player; @@ -62,6 +67,7 @@ public class ArmorTask implements Runnable { * * @return The {@link Set} of {@link PotionEffect PotionEffects} applied upon radioactive contact */ + @Nonnull public Set getRadiationEffects() { return radiationEffects; } @@ -88,6 +94,7 @@ public class ArmorTask implements Runnable { } } + @ParametersAreNonnullByDefault private void handleSlimefunArmor(Player p, ItemStack[] armor, HashedArmorpiece[] cachedArmor) { for (int slot = 0; slot < 4; slot++) { ItemStack item = armor[slot]; @@ -119,7 +126,7 @@ public class ArmorTask implements Runnable { } } - private void checkForSolarHelmet(Player p) { + private void checkForSolarHelmet(@Nonnull Player p) { ItemStack helmet = p.getInventory().getHelmet(); if (SlimefunPlugin.getRegistry().isBackwardsCompatible() && !SlimefunUtils.isItemSimilar(helmet, SlimefunItems.SOLAR_HELMET, true, false)) { @@ -134,7 +141,7 @@ public class ArmorTask implements Runnable { } } - private boolean hasSunlight(Player p) { + private boolean hasSunlight(@Nonnull Player p) { World world = p.getWorld(); if (world.getEnvironment() != Environment.NORMAL) { @@ -145,7 +152,7 @@ public class ArmorTask implements Runnable { return (world.getTime() < 12300 || world.getTime() > 23850) && p.getEyeLocation().getBlock().getLightFromSky() == 15; } - private void checkForRadiation(Player p, PlayerProfile profile) { + private void checkForRadiation(@Nonnull Player p, @Nonnull PlayerProfile profile) { if (!profile.hasFullProtectionAgainst(ProtectionType.RADIATION)) { for (ItemStack item : p.getInventory()) { if (checkAndApplyRadiation(p, item)) { @@ -155,7 +162,11 @@ public class ArmorTask implements Runnable { } } - private boolean checkAndApplyRadiation(Player p, ItemStack item) { + private boolean checkAndApplyRadiation(@Nonnull Player p, @Nullable ItemStack item) { + if (item == null || item.getType() == Material.AIR) { + return false; + } + for (SlimefunItem radioactiveItem : SlimefunPlugin.getRegistry().getRadioactiveItems()) { if (radioactiveItem.isItem(item) && Slimefun.isEnabled(p, radioactiveItem, true)) { // If the item is enabled in the world, then make radioactivity do its job diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/JetBootsTask.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/JetBootsTask.java index 0c79d4c62..1796150da 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/JetBootsTask.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/JetBootsTask.java @@ -2,6 +2,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.tasks; import java.util.concurrent.ThreadLocalRandom; +import javax.annotation.Nonnull; + import org.bukkit.Bukkit; import org.bukkit.Effect; import org.bukkit.Material; @@ -18,7 +20,7 @@ public class JetBootsTask extends PlayerTask { private final JetBoots boots; - public JetBootsTask(Player p, JetBoots boots) { + public JetBootsTask(@Nonnull Player p, @Nonnull JetBoots boots) { super(p); this.boots = boots; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/JetpackTask.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/JetpackTask.java index ece737483..8a31be635 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/JetpackTask.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/JetpackTask.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.tasks; +import javax.annotation.Nonnull; + import org.bukkit.Bukkit; import org.bukkit.Effect; import org.bukkit.Material; @@ -15,7 +17,7 @@ public class JetpackTask extends PlayerTask { private final Jetpack jetpack; - public JetpackTask(Player p, Jetpack jetpack) { + public JetpackTask(@Nonnull Player p, @Nonnull Jetpack jetpack) { super(p); this.jetpack = jetpack; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/MagnetTask.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/MagnetTask.java index efc5cd79f..4d0b793f8 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/MagnetTask.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/MagnetTask.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.tasks; +import javax.annotation.Nonnull; + import org.bukkit.GameMode; import org.bukkit.Sound; import org.bukkit.entity.Entity; @@ -31,7 +33,7 @@ public class MagnetTask extends PlayerTask { * @param radius * The radius in which items should be picked up */ - public MagnetTask(Player p, double radius) { + public MagnetTask(@Nonnull Player p, double radius) { super(p); this.radius = radius; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/ParachuteTask.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/ParachuteTask.java index 58f9fc642..2693853c2 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/ParachuteTask.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/ParachuteTask.java @@ -1,12 +1,14 @@ package io.github.thebusybiscuit.slimefun4.implementation.tasks; +import javax.annotation.Nonnull; + import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.util.Vector; public class ParachuteTask extends PlayerTask { - public ParachuteTask(Player p) { + public ParachuteTask(@Nonnull Player p) { super(p); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/PlayerTask.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/PlayerTask.java index 7f9f49fcc..ee1097858 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/PlayerTask.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/PlayerTask.java @@ -1,5 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.tasks; +import javax.annotation.Nonnull; + import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -10,7 +12,7 @@ abstract class PlayerTask implements Runnable { protected int id; protected Player p; - public PlayerTask(Player p) { + PlayerTask(@Nonnull Player p) { this.p = p; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/SlimefunStartupTask.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/SlimefunStartupTask.java index d3d5ee38e..d9c439772 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/SlimefunStartupTask.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/SlimefunStartupTask.java @@ -2,6 +2,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.tasks; import java.util.logging.Level; +import javax.annotation.Nonnull; + import org.bukkit.Bukkit; import org.bukkit.World; @@ -35,7 +37,7 @@ public class SlimefunStartupTask implements Runnable { * @param runnable * A {@link Runnable} containing additional operations that need to be run */ - public SlimefunStartupTask(SlimefunPlugin plugin, Runnable runnable) { + public SlimefunStartupTask(@Nonnull SlimefunPlugin plugin, @Nonnull Runnable runnable) { this.plugin = plugin; this.runnable = runnable; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/TickerTask.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/TickerTask.java index 11485df7c..64a2ffb13 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/TickerTask.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/TickerTask.java @@ -7,6 +7,9 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; +import javax.annotation.Nonnull; +import javax.annotation.ParametersAreNonnullByDefault; + import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -53,7 +56,7 @@ public class TickerTask implements Runnable { * @param plugin * The instance of our {@link SlimefunPlugin} */ - public void start(SlimefunPlugin plugin) { + public void start(@Nonnull SlimefunPlugin plugin) { this.tickRate = SlimefunPlugin.getCfg().getInt("URID.custom-ticker-delay"); BukkitScheduler scheduler = plugin.getServer().getScheduler(); @@ -113,7 +116,7 @@ public class TickerTask implements Runnable { } } - private void tickChunk(Set tickers, String chunk) { + private void tickChunk(@Nonnull Set tickers, @Nonnull String chunk) { try { Set locations = BlockStorage.getTickingLocations(chunk); String[] components = PatternUtils.SEMICOLON.split(chunk); @@ -133,7 +136,7 @@ public class TickerTask implements Runnable { } } - private void tickLocation(Set tickers, Location l) { + private void tickLocation(@Nonnull Set tickers, @Nonnull Location l) { Config data = BlockStorage.getLocationInfo(l); SlimefunItem item = SlimefunItem.getByID(data.getString("id")); @@ -164,6 +167,7 @@ public class TickerTask implements Runnable { } } + @ParametersAreNonnullByDefault private void tickBlock(Location l, Block b, SlimefunItem item, Config data, long timestamp) { try { item.getBlockTicker().tick(b, item, data); @@ -176,6 +180,7 @@ public class TickerTask implements Runnable { } } + @ParametersAreNonnullByDefault private void reportErrors(Location l, SlimefunItem item, Throwable x) { BlockPosition position = new BlockPosition(l); int errors = bugs.getOrDefault(position, 0) + 1; @@ -208,10 +213,12 @@ public class TickerTask implements Runnable { halted = true; } + @ParametersAreNonnullByDefault public void queueMove(Location from, Location to) { movingQueue.put(from, to); } + @ParametersAreNonnullByDefault public void queueDelete(Location l, boolean destroy) { deletionQueue.put(l, destroy); }