1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-19 19:25:48 +00:00

Small improvement, many annotations

This commit is contained in:
TheBusyBiscuit 2020-09-03 12:24:49 +02:00
parent bb4c4b3a59
commit dd9962d3e2
56 changed files with 358 additions and 129 deletions

View File

@ -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

View File

@ -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");

View File

@ -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;

View File

@ -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;

View File

@ -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;
}

View File

@ -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<MachineFuel> getFuelTypes() {
return fuelTypes;
}

View File

@ -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);
}

View File

@ -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<Integer, Integer> 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())) {

View File

@ -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<Location> getAltarsInUse() {
return altarsInUse;
}
@Nonnull
public List<Block> 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<Block> pedestals, ItemStack catalyst) {
List<ItemStack> input = new ArrayList<>();
@ -266,7 +272,8 @@ public class AncientAltarListener implements Listener {
}
}
private List<Block> getPedestals(Block altar) {
@Nonnull
private List<Block> getPedestals(@Nonnull Block altar) {
List<Block> 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<ItemStack> getRecipeOutput(ItemStack catalyst, List<ItemStack> input) {
if (input.size() != 8) {
@Nonnull
public Optional<ItemStack> getRecipeOutput(@Nonnull ItemStack catalyst, @Nonnull List<ItemStack> inputs) {
if (inputs.size() != 8) {
return Optional.empty();
}
ItemStackWrapper wrapper = new ItemStackWrapper(catalyst);
List<ItemStackWrapper> items = ItemStackWrapper.wrapList(input);
List<ItemStackWrapper> 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<ItemStack> checkRecipe(ItemStack catalyst, List<ItemStackWrapper> items) {
@Nonnull
private Optional<ItemStack> checkRecipe(@Nonnull ItemStack catalyst, @Nonnull List<ItemStackWrapper> items) {
for (AltarRecipe recipe : altarItem.getRecipes()) {
if (SlimefunUtils.isItemSimilar(catalyst, recipe.getCatalyst(), true)) {
Optional<ItemStack> optional = checkPedestals(items, recipe);
@ -334,7 +343,8 @@ public class AncientAltarListener implements Listener {
return Optional.empty();
}
private Optional<ItemStack> checkPedestals(List<ItemStackWrapper> items, AltarRecipe recipe) {
@Nonnull
private Optional<ItemStack> checkPedestals(@Nonnull List<ItemStackWrapper> 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++) {

View File

@ -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<UUID, ItemStack> 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!");

View File

@ -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);
}

View File

@ -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<Material> 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<ItemStack> 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)) {

View File

@ -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);
}

View File

@ -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<ItemStack> drops, EntityType entityType) {
Random random = ThreadLocalRandom.current();

View File

@ -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);

View File

@ -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;

View File

@ -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);
}

View File

@ -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);

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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();

View File

@ -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);

View File

@ -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<UUID, GrapplingHookEntity> activeHooks = new HashMap<>();
private final Set<UUID> 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();

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);

View File

@ -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<Material> tag : MultiBlock.getSupportedTags()) {
if (tag.isTagged(a) && tag.isTagged(b)) {

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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());

View File

@ -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<UUID, SlimefunBow> 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<UUID, SlimefunBow> getProjectileData() {
return projectiles;
}

View File

@ -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();

View File

@ -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);
}

View File

@ -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<SlimefunItem> optional = event.getSlimefunItem();
@ -79,6 +84,7 @@ public class SlimefunItemListener implements Listener {
return defaultValue;
}
@ParametersAreNonnullByDefault
private boolean rightClickBlock(PlayerInteractEvent e, PlayerRightClickEvent event) {
Optional<SlimefunItem> 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);

View File

@ -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<UUID, Map<Integer, ItemStack>> 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<Integer, ItemStack> items = soulbound.computeIfAbsent(uuid, uid -> new HashMap<>());
items.put(slot, item);
}
private void retrieveItems(Player p) {
private void retrieveItems(@Nonnull Player p) {
Map<Integer, ItemStack> items = soulbound.remove(p.getUniqueId());
if (items != null) {

View File

@ -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<ItemStack> getExtraDrops(LivingEntity entity, Collection<ItemStack> drops) {
List<ItemStack> 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;

View File

@ -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;

View File

@ -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;

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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<Block> pedestals, List<ItemStack> 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> item = pedestalItem.getPlacedItem(pedestal);
if (!item.isPresent() || positionLock.remove(item.get()) == null) {

View File

@ -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<PotionEffect> 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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<BlockTicker> tickers, String chunk) {
private void tickChunk(@Nonnull Set<BlockTicker> tickers, @Nonnull String chunk) {
try {
Set<Location> locations = BlockStorage.getTickingLocations(chunk);
String[] components = PatternUtils.SEMICOLON.split(chunk);
@ -133,7 +136,7 @@ public class TickerTask implements Runnable {
}
}
private void tickLocation(Set<BlockTicker> tickers, Location l) {
private void tickLocation(@Nonnull Set<BlockTicker> 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);
}