mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-19 19:25:48 +00:00
[CI skip] More annotations :o
This commit is contained in:
parent
c5630791c0
commit
4ce4388218
@ -5,6 +5,9 @@ import java.util.HashSet;
|
||||
import java.util.Queue;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Location;
|
||||
@ -44,7 +47,7 @@ public abstract class Network {
|
||||
* @param regulator
|
||||
* The {@link Location} marking the regulator of this {@link Network}.
|
||||
*/
|
||||
protected Network(NetworkManager manager, Location regulator) {
|
||||
protected Network(@Nonnull NetworkManager manager, @Nonnull Location regulator) {
|
||||
Validate.notNull(manager, "A NetworkManager must be provided");
|
||||
Validate.notNull(regulator, "No regulator was specified");
|
||||
|
||||
@ -74,7 +77,8 @@ public abstract class Network {
|
||||
* The {@link Location} to classify
|
||||
* @return The assigned type of {@link NetworkComponent} for this {@link Location}
|
||||
*/
|
||||
public abstract NetworkComponent classifyLocation(Location l);
|
||||
@Nullable
|
||||
public abstract NetworkComponent classifyLocation(@Nonnull Location l);
|
||||
|
||||
/**
|
||||
* This method is called whenever a {@link Location} in this {@link Network} changes
|
||||
@ -99,7 +103,7 @@ public abstract class Network {
|
||||
return regulatorNodes.size() + connectorNodes.size() + terminusNodes.size();
|
||||
}
|
||||
|
||||
protected void addLocationToNetwork(Location l) {
|
||||
protected void addLocationToNetwork(@Nonnull Location l) {
|
||||
if (connectedLocations.contains(l)) {
|
||||
return;
|
||||
}
|
||||
@ -115,7 +119,7 @@ public abstract class Network {
|
||||
* @param l
|
||||
* The {@link Location} to update
|
||||
*/
|
||||
public void markDirty(Location l) {
|
||||
public void markDirty(@Nonnull Location l) {
|
||||
if (regulator.equals(l)) {
|
||||
manager.unregisterNetwork(this);
|
||||
}
|
||||
@ -131,11 +135,12 @@ public abstract class Network {
|
||||
* The {@link Location} to check for
|
||||
* @return Whether the given {@link Location} is part of this {@link Network}
|
||||
*/
|
||||
public boolean connectsTo(Location l) {
|
||||
public boolean connectsTo(@Nonnull Location l) {
|
||||
return connectedLocations.contains(l);
|
||||
}
|
||||
|
||||
private NetworkComponent getCurrentClassification(Location l) {
|
||||
@Nullable
|
||||
private NetworkComponent getCurrentClassification(@Nonnull Location l) {
|
||||
if (regulatorNodes.contains(l)) {
|
||||
return NetworkComponent.REGULATOR;
|
||||
}
|
||||
@ -191,14 +196,14 @@ public abstract class Network {
|
||||
}
|
||||
}
|
||||
|
||||
private void discoverNeighbors(Location l, double xDiff, double yDiff, double zDiff) {
|
||||
private void discoverNeighbors(@Nonnull Location l, double xDiff, double yDiff, double zDiff) {
|
||||
for (int i = getRange() + 1; i > 0; i--) {
|
||||
Location newLocation = l.clone().add(i * xDiff, i * yDiff, i * zDiff);
|
||||
addLocationToNetwork(newLocation);
|
||||
}
|
||||
}
|
||||
|
||||
private void discoverNeighbors(Location l) {
|
||||
private void discoverNeighbors(@Nonnull Location l) {
|
||||
discoverNeighbors(l, 1.0, 0.0, 0.0);
|
||||
discoverNeighbors(l, -1.0, 0.0, 0.0);
|
||||
discoverNeighbors(l, 0.0, 1.0, 0.0);
|
||||
@ -230,6 +235,7 @@ public abstract class Network {
|
||||
*
|
||||
* @return The {@link Location} of our regulator
|
||||
*/
|
||||
@Nonnull
|
||||
public Location getRegulator() {
|
||||
return regulator;
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package io.github.thebusybiscuit.slimefun4.core.attributes;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Location;
|
||||
|
||||
@ -33,6 +35,7 @@ public interface EnergyNetComponent extends ItemAttribute {
|
||||
*
|
||||
* @return The {@link EnergyNetComponentType} this {@link SlimefunItem} represents.
|
||||
*/
|
||||
@Nonnull
|
||||
EnergyNetComponentType getEnergyComponentType();
|
||||
|
||||
/**
|
||||
@ -61,7 +64,7 @@ public interface EnergyNetComponent extends ItemAttribute {
|
||||
*
|
||||
* @return The charge stored at that {@link Location}
|
||||
*/
|
||||
default int getCharge(Location l) {
|
||||
default int getCharge(@Nonnull Location l) {
|
||||
Validate.notNull(l, "Location was null!");
|
||||
String charge = BlockStorage.getLocationInfo(l, "energy-charge");
|
||||
|
||||
@ -83,7 +86,7 @@ public interface EnergyNetComponent extends ItemAttribute {
|
||||
* @param charge
|
||||
* The new charge
|
||||
*/
|
||||
default void setCharge(Location l, int charge) {
|
||||
default void setCharge(@Nonnull Location l, int charge) {
|
||||
Validate.notNull(l, "Location was null!");
|
||||
Validate.isTrue(charge >= 0, "You can only set a charge of zero or more!");
|
||||
int capacity = getCapacity();
|
||||
@ -104,7 +107,7 @@ public interface EnergyNetComponent extends ItemAttribute {
|
||||
}
|
||||
}
|
||||
|
||||
default void addCharge(Location l, int charge) {
|
||||
default void addCharge(@Nonnull Location l, int charge) {
|
||||
Validate.notNull(l, "Location was null!");
|
||||
Validate.isTrue(charge > 0, "You can only add a positive charge!");
|
||||
int capacity = getCapacity();
|
||||
@ -126,7 +129,7 @@ public interface EnergyNetComponent extends ItemAttribute {
|
||||
}
|
||||
}
|
||||
|
||||
default void removeCharge(Location l, int charge) {
|
||||
default void removeCharge(@Nonnull Location l, int charge) {
|
||||
Validate.notNull(l, "Location was null!");
|
||||
Validate.isTrue(charge > 0, "The charge to remove must be greater than zero!");
|
||||
int capacity = getCapacity();
|
||||
|
@ -1,5 +1,7 @@
|
||||
package io.github.thebusybiscuit.slimefun4.core.attributes;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.Location;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.core.networks.energy.EnergyNet;
|
||||
@ -42,7 +44,7 @@ public interface EnergyNetProvider extends EnergyNetComponent {
|
||||
*
|
||||
* @return The generated output energy of this {@link EnergyNetProvider}.
|
||||
*/
|
||||
int getGeneratedOutput(Location l, Config data);
|
||||
int getGeneratedOutput(@Nonnull Location l, @Nonnull Config data);
|
||||
|
||||
/**
|
||||
* This method returns whether the given {@link Location} is going to explode on the
|
||||
@ -55,7 +57,7 @@ public interface EnergyNetProvider extends EnergyNetComponent {
|
||||
*
|
||||
* @return Whether or not this {@link Location} will explode.
|
||||
*/
|
||||
default boolean willExplode(Location l, Config data) {
|
||||
default boolean willExplode(@Nonnull Location l, @Nonnull Config data) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1,17 +1,19 @@
|
||||
package io.github.thebusybiscuit.slimefun4.core.attributes;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public enum MachineTier {
|
||||
|
||||
BASIC("&eBasic"),
|
||||
AVERAGE("&6Average"),
|
||||
MEDIUM("&aMedium"),
|
||||
GOOD("&2Good"),
|
||||
ADVANCED("&6Advanced"),
|
||||
BASIC("&eBasic"),
|
||||
AVERAGE("&6Average"),
|
||||
MEDIUM("&aMedium"),
|
||||
GOOD("&2Good"),
|
||||
ADVANCED("&6Advanced"),
|
||||
END_GAME("&4End-Game");
|
||||
|
||||
private final String prefix;
|
||||
|
||||
MachineTier(String prefix) {
|
||||
MachineTier(@Nonnull String prefix) {
|
||||
this.prefix = prefix;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
package io.github.thebusybiscuit.slimefun4.core.attributes;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public enum MachineType {
|
||||
|
||||
CAPACITOR("Capacitor"),
|
||||
@ -8,7 +10,7 @@ public enum MachineType {
|
||||
|
||||
private final String suffix;
|
||||
|
||||
MachineType(String suffix) {
|
||||
MachineType(@Nonnull String suffix) {
|
||||
this.suffix = suffix;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
package io.github.thebusybiscuit.slimefun4.core.attributes;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
|
||||
/**
|
||||
@ -12,6 +14,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
* @author TheBusyBiscuit
|
||||
*
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface Radioactive extends ItemAttribute {
|
||||
|
||||
/**
|
||||
@ -20,6 +23,7 @@ public interface Radioactive extends ItemAttribute {
|
||||
*
|
||||
* @return The level of {@link Radioactivity} of this item.
|
||||
*/
|
||||
@Nonnull
|
||||
Radioactivity getRadioactivity();
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package io.github.thebusybiscuit.slimefun4.core.attributes;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@ -47,10 +49,11 @@ public enum Radioactivity {
|
||||
|
||||
private final ChatColor color;
|
||||
|
||||
Radioactivity(ChatColor color) {
|
||||
Radioactivity(@Nonnull ChatColor color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public String getLore() {
|
||||
return ChatColor.GREEN + "\u2622" + ChatColor.GRAY + " Radiation level: " + color + toString().replace('_', ' ');
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
@ -33,7 +35,7 @@ final class RechargeableHelper {
|
||||
|
||||
private RechargeableHelper() {}
|
||||
|
||||
static void setCharge(ItemMeta meta, float charge, float capacity) {
|
||||
static void setCharge(@Nonnull ItemMeta meta, float charge, float capacity) {
|
||||
BigDecimal decimal = BigDecimal.valueOf(charge).setScale(2, RoundingMode.HALF_UP);
|
||||
float value = decimal.floatValue();
|
||||
|
||||
@ -56,7 +58,7 @@ final class RechargeableHelper {
|
||||
meta.setLore(lore);
|
||||
}
|
||||
|
||||
static float getCharge(ItemMeta meta) {
|
||||
static float getCharge(@Nonnull ItemMeta meta) {
|
||||
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) {
|
||||
Float value = meta.getPersistentDataContainer().get(CHARGE_KEY, PersistentDataType.FLOAT);
|
||||
|
||||
|
@ -2,6 +2,8 @@ package io.github.thebusybiscuit.slimefun4.core.attributes;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
@ -38,13 +40,16 @@ public interface RecipeDisplayItem extends ItemAttribute {
|
||||
*
|
||||
* @return The recipes to display in the {@link SlimefunGuide}
|
||||
*/
|
||||
@Nonnull
|
||||
List<ItemStack> getDisplayRecipes();
|
||||
|
||||
@Nonnull
|
||||
default String getLabelLocalPath() {
|
||||
return "guide.tooltips.recipes.machine";
|
||||
}
|
||||
|
||||
default String getRecipeSectionLabel(Player p) {
|
||||
@Nonnull
|
||||
default String getRecipeSectionLabel(@Nonnull Player p) {
|
||||
return "&7\u21E9 " + SlimefunPlugin.getLocalization().getMessage(p, getLabelLocalPath()) + " \u21E9";
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package io.github.thebusybiscuit.slimefun4.core.attributes;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Wither;
|
||||
|
||||
@ -28,6 +30,6 @@ public interface WitherProof extends ItemAttribute {
|
||||
* @param wither
|
||||
* The {@link Wither} who attacked.
|
||||
*/
|
||||
void onAttack(Block block, Wither wither);
|
||||
void onAttack(@Nonnull Block block, @Nonnull Wither wither);
|
||||
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
@ -37,7 +39,7 @@ public class SlimefunCommand implements CommandExecutor, Listener {
|
||||
* @param plugin
|
||||
* The instance of our {@link SlimefunPlugin}
|
||||
*/
|
||||
public SlimefunCommand(SlimefunPlugin plugin) {
|
||||
public SlimefunCommand(@Nonnull SlimefunPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@ -52,6 +54,7 @@ public class SlimefunCommand implements CommandExecutor, Listener {
|
||||
commands.addAll(SlimefunSubCommands.getAllCommands(this));
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public SlimefunPlugin getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
@ -61,6 +64,7 @@ public class SlimefunCommand implements CommandExecutor, Listener {
|
||||
*
|
||||
* @return A {@link Map} holding the amount of times each command was run
|
||||
*/
|
||||
@Nonnull
|
||||
public Map<SubCommand, Integer> getCommandUsage() {
|
||||
return commandUsage;
|
||||
}
|
||||
@ -82,7 +86,7 @@ public class SlimefunCommand implements CommandExecutor, Listener {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void sendHelp(CommandSender sender) {
|
||||
public void sendHelp(@Nonnull CommandSender sender) {
|
||||
sender.sendMessage("");
|
||||
sender.sendMessage(ChatColors.color("&aSlimefun &2v" + SlimefunPlugin.getVersion()));
|
||||
sender.sendMessage("");
|
||||
@ -107,6 +111,7 @@ public class SlimefunCommand implements CommandExecutor, Listener {
|
||||
*
|
||||
* @return A {@link List} containing every {@link SubCommand}
|
||||
*/
|
||||
@Nonnull
|
||||
public List<String> getSubCommandNames() {
|
||||
return commands.stream().map(SubCommand::getName).collect(Collectors.toList());
|
||||
}
|
||||
|
@ -7,6 +7,8 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
@ -21,7 +23,7 @@ class SlimefunTabCompleter implements TabCompleter {
|
||||
|
||||
private final SlimefunCommand command;
|
||||
|
||||
public SlimefunTabCompleter(SlimefunCommand command) {
|
||||
public SlimefunTabCompleter(@Nonnull SlimefunCommand command) {
|
||||
this.command = command;
|
||||
}
|
||||
|
||||
@ -70,7 +72,8 @@ class SlimefunTabCompleter implements TabCompleter {
|
||||
* The typed string
|
||||
* @return Sublist if string is not empty
|
||||
*/
|
||||
private List<String> createReturnList(List<String> list, String string) {
|
||||
@Nonnull
|
||||
private List<String> createReturnList(@Nonnull List<String> list, @Nonnull String string) {
|
||||
if (string.length() == 0) {
|
||||
return list;
|
||||
}
|
||||
@ -94,6 +97,7 @@ class SlimefunTabCompleter implements TabCompleter {
|
||||
return returnList;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
private List<String> getSlimefunItems() {
|
||||
List<SlimefunItem> items = SlimefunPlugin.getRegistry().getEnabledSlimefunItems();
|
||||
List<String> list = new ArrayList<>(items.size());
|
||||
|
@ -2,6 +2,9 @@ package io.github.thebusybiscuit.slimefun4.core.commands;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.defaults.HelpCommand;
|
||||
@ -27,6 +30,7 @@ public abstract class SubCommand {
|
||||
private final String name;
|
||||
private final boolean hidden;
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
protected SubCommand(SlimefunPlugin plugin, SlimefunCommand cmd, String name, boolean hidden) {
|
||||
this.plugin = plugin;
|
||||
this.cmd = cmd;
|
||||
@ -41,6 +45,7 @@ public abstract class SubCommand {
|
||||
*
|
||||
* @return The name of this {@link SubCommand}
|
||||
*/
|
||||
@Nonnull
|
||||
public final String getName() {
|
||||
return name;
|
||||
}
|
||||
@ -54,12 +59,13 @@ public abstract class SubCommand {
|
||||
return hidden;
|
||||
}
|
||||
|
||||
protected void recordUsage(Map<SubCommand, Integer> commandUsage) {
|
||||
protected void recordUsage(@Nonnull Map<SubCommand, Integer> commandUsage) {
|
||||
commandUsage.merge(this, 1, Integer::sum);
|
||||
}
|
||||
|
||||
public abstract void onExecute(CommandSender sender, String[] args);
|
||||
public abstract void onExecute(@Nonnull CommandSender sender, @Nonnull String[] args);
|
||||
|
||||
@Nonnull
|
||||
protected String getDescription() {
|
||||
return "commands." + getName();
|
||||
}
|
||||
@ -73,7 +79,8 @@ public abstract class SubCommand {
|
||||
* The {@link CommandSender} who requested the description
|
||||
* @return A possibly localized description of this {@link SubCommand}
|
||||
*/
|
||||
public String getDescription(CommandSender sender) {
|
||||
@Nonnull
|
||||
public String getDescription(@Nonnull CommandSender sender) {
|
||||
if (sender instanceof Player) {
|
||||
return SlimefunPlugin.getLocalization().getMessage((Player) sender, getDescription());
|
||||
}
|
||||
|
@ -1,15 +1,18 @@
|
||||
package io.github.thebusybiscuit.slimefun4.core.guide;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
class GuideEntry<T> {
|
||||
|
||||
private final T object;
|
||||
private int page;
|
||||
|
||||
GuideEntry(T object, int page) {
|
||||
GuideEntry(@Nonnull T object, int page) {
|
||||
this.object = object;
|
||||
this.page = page;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public T getIndexedObject() {
|
||||
return object;
|
||||
}
|
||||
|
@ -3,6 +3,9 @@ package io.github.thebusybiscuit.slimefun4.core.guide;
|
||||
import java.util.Deque;
|
||||
import java.util.LinkedList;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -32,7 +35,7 @@ public class GuideHistory {
|
||||
* @param profile
|
||||
* The {@link PlayerProfile} this {@link GuideHistory} was made for
|
||||
*/
|
||||
public GuideHistory(PlayerProfile profile) {
|
||||
public GuideHistory(@Nonnull PlayerProfile profile) {
|
||||
Validate.notNull(profile, "Cannot create a GuideHistory without a PlayerProfile!");
|
||||
this.profile = profile;
|
||||
}
|
||||
@ -54,7 +57,7 @@ public class GuideHistory {
|
||||
* @param page
|
||||
* The current page of the {@link Category} that should be stored
|
||||
*/
|
||||
public void add(Category category, int page) {
|
||||
public void add(@Nonnull Category category, int page) {
|
||||
refresh(category, page);
|
||||
}
|
||||
|
||||
@ -68,7 +71,7 @@ public class GuideHistory {
|
||||
* @param page
|
||||
* The current page of the recipes of this {@link ItemStack}
|
||||
*/
|
||||
public void add(ItemStack item, int page) {
|
||||
public void add(@Nonnull ItemStack item, int page) {
|
||||
refresh(item, page);
|
||||
}
|
||||
|
||||
@ -78,8 +81,8 @@ public class GuideHistory {
|
||||
* @param item
|
||||
* The {@link SlimefunItem} that should be added to this {@link GuideHistory}
|
||||
*/
|
||||
public void add(SlimefunItem item) {
|
||||
Validate.notNull(item, "Cannot add a nonexisting SlimefunItem to the GuideHistory!");
|
||||
public void add(@Nonnull SlimefunItem item) {
|
||||
Validate.notNull(item, "Cannot add a non-existing SlimefunItem to the GuideHistory!");
|
||||
queue.add(new GuideEntry<>(item, 0));
|
||||
}
|
||||
|
||||
@ -89,12 +92,12 @@ public class GuideHistory {
|
||||
* @param searchTerm
|
||||
* The term that the {@link Player} searched for
|
||||
*/
|
||||
public void add(String searchTerm) {
|
||||
public void add(@Nonnull String searchTerm) {
|
||||
Validate.notNull(searchTerm, "Cannot add an empty Search Term to the GuideHistory!");
|
||||
queue.add(new GuideEntry<>(searchTerm, 0));
|
||||
}
|
||||
|
||||
private <T> void refresh(T object, int page) {
|
||||
private <T> void refresh(@Nonnull T object, int page) {
|
||||
Validate.notNull(object, "Cannot add a null Entry to the GuideHistory!");
|
||||
Validate.isTrue(page >= 0, "page must not be negative!");
|
||||
|
||||
@ -125,6 +128,7 @@ public class GuideHistory {
|
||||
* Whether to remove the current entry so it moves back to the entry returned.
|
||||
* @return The last Guide Entry that was saved to the given Players guide history.
|
||||
*/
|
||||
@Nullable
|
||||
private GuideEntry<?> getLastEntry(boolean remove) {
|
||||
if (remove && !queue.isEmpty()) {
|
||||
queue.removeLast();
|
||||
@ -140,7 +144,7 @@ public class GuideHistory {
|
||||
* @param guide
|
||||
* The {@link SlimefunGuideImplementation} to use
|
||||
*/
|
||||
public void openLastEntry(SlimefunGuideImplementation guide) {
|
||||
public void openLastEntry(@Nonnull SlimefunGuideImplementation guide) {
|
||||
GuideEntry<?> entry = getLastEntry(false);
|
||||
open(guide, entry);
|
||||
}
|
||||
@ -155,12 +159,12 @@ public class GuideHistory {
|
||||
* @param guide
|
||||
* The {@link SlimefunGuideImplementation} to use
|
||||
*/
|
||||
public void goBack(SlimefunGuideImplementation guide) {
|
||||
public void goBack(@Nonnull SlimefunGuideImplementation guide) {
|
||||
GuideEntry<?> entry = getLastEntry(true);
|
||||
open(guide, entry);
|
||||
}
|
||||
|
||||
private <T> void open(SlimefunGuideImplementation guide, GuideEntry<T> entry) {
|
||||
private <T> void open(@Nonnull SlimefunGuideImplementation guide, @Nullable GuideEntry<T> entry) {
|
||||
if (entry == null) {
|
||||
guide.openMainMenu(profile, 1);
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ package io.github.thebusybiscuit.slimefun4.core.guide;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
@ -29,7 +31,7 @@ public final class SlimefunGuide {
|
||||
|
||||
private SlimefunGuide() {}
|
||||
|
||||
public static ItemStack getItem(SlimefunGuideLayout design) {
|
||||
public static ItemStack getItem(@Nonnull SlimefunGuideLayout design) {
|
||||
return SlimefunPlugin.getRegistry().getGuideLayout(design).getItem();
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,8 @@ package io.github.thebusybiscuit.slimefun4.core.guide;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -33,6 +35,7 @@ public interface SlimefunGuideImplementation {
|
||||
*
|
||||
* @return The layout this {@link SlimefunGuideImplementation} represents
|
||||
*/
|
||||
@Nonnull
|
||||
SlimefunGuideLayout getLayout();
|
||||
|
||||
/**
|
||||
@ -42,6 +45,7 @@ public interface SlimefunGuideImplementation {
|
||||
*
|
||||
* @return The {@link ItemStack} representation for this {@link SlimefunGuideImplementation}
|
||||
*/
|
||||
@Nonnull
|
||||
ItemStack getItem();
|
||||
|
||||
/**
|
||||
|
@ -5,6 +5,9 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Server;
|
||||
@ -54,11 +57,13 @@ public class NetworkManager {
|
||||
*
|
||||
* @return A {@link List} containing every {@link Network} on the {@link Server}
|
||||
*/
|
||||
@Nonnull
|
||||
public List<Network> getNetworkList() {
|
||||
return networks;
|
||||
}
|
||||
|
||||
public <T extends Network> Optional<T> getNetworkFromLocation(Location l, Class<T> type) {
|
||||
@Nonnull
|
||||
public <T extends Network> Optional<T> getNetworkFromLocation(@Nullable Location l, @Nonnull Class<T> type) {
|
||||
if (l == null) {
|
||||
return Optional.empty();
|
||||
}
|
||||
@ -73,7 +78,8 @@ public class NetworkManager {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
public <T extends Network> List<T> getNetworksFromLocation(Location l, Class<T> type) {
|
||||
@Nonnull
|
||||
public <T extends Network> List<T> getNetworksFromLocation(@Nullable Location l, @Nonnull Class<T> type) {
|
||||
if (l == null) {
|
||||
// No networks here, if the location does not even exist
|
||||
return new ArrayList<>();
|
||||
@ -97,7 +103,7 @@ public class NetworkManager {
|
||||
* @param network
|
||||
* The {@link Network} to register
|
||||
*/
|
||||
public void registerNetwork(Network network) {
|
||||
public void registerNetwork(@Nonnull Network network) {
|
||||
Validate.notNull(network, "Cannot register a null Network");
|
||||
networks.add(network);
|
||||
}
|
||||
@ -108,7 +114,7 @@ public class NetworkManager {
|
||||
* @param network
|
||||
* The {@link Network} to remove
|
||||
*/
|
||||
public void unregisterNetwork(Network network) {
|
||||
public void unregisterNetwork(@Nonnull Network network) {
|
||||
Validate.notNull(network, "Cannot unregister a null Network");
|
||||
networks.remove(network);
|
||||
}
|
||||
@ -120,7 +126,9 @@ public class NetworkManager {
|
||||
* @param l
|
||||
* The {@link Location} to update
|
||||
*/
|
||||
public void updateAllNetworks(Location l) {
|
||||
public void updateAllNetworks(@Nonnull Location l) {
|
||||
Validate.notNull(l, "The Location cannot be null");
|
||||
|
||||
for (Network network : getNetworksFromLocation(l, Network.class)) {
|
||||
network.markDirty(l);
|
||||
}
|
||||
|
@ -9,6 +9,8 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -46,11 +48,11 @@ public class CargoNet extends ChestTerminalNetwork {
|
||||
protected final Map<Location, Integer> roundRobin = new HashMap<>();
|
||||
private int tickDelayThreshold = 0;
|
||||
|
||||
public static CargoNet getNetworkFromLocation(Location l) {
|
||||
public static CargoNet getNetworkFromLocation(@Nonnull Location l) {
|
||||
return SlimefunPlugin.getNetworkManager().getNetworkFromLocation(l, CargoNet.class).orElse(null);
|
||||
}
|
||||
|
||||
public static CargoNet getNetworkFromLocationOrCreate(Location l) {
|
||||
public static CargoNet getNetworkFromLocationOrCreate(@Nonnull Location l) {
|
||||
Optional<CargoNet> cargoNetwork = SlimefunPlugin.getNetworkManager().getNetworkFromLocation(l, CargoNet.class);
|
||||
|
||||
if (cargoNetwork.isPresent()) {
|
||||
@ -69,7 +71,7 @@ public class CargoNet extends ChestTerminalNetwork {
|
||||
* @param l
|
||||
* The {@link Location} marking the manager of this {@link Network}.
|
||||
*/
|
||||
protected CargoNet(Location l) {
|
||||
protected CargoNet(@Nonnull Location l) {
|
||||
super(l);
|
||||
}
|
||||
|
||||
@ -79,7 +81,7 @@ public class CargoNet extends ChestTerminalNetwork {
|
||||
}
|
||||
|
||||
@Override
|
||||
public NetworkComponent classifyLocation(Location l) {
|
||||
public NetworkComponent classifyLocation(@Nonnull Location l) {
|
||||
String id = BlockStorage.checkID(l);
|
||||
|
||||
if (id == null) {
|
||||
|
@ -8,6 +8,8 @@ import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
@ -44,6 +46,7 @@ class CargoNetworkTask implements Runnable {
|
||||
private final Set<Location> chestTerminalInputs;
|
||||
private final Set<Location> chestTerminalOutputs;
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
CargoNetworkTask(CargoNet network, Map<Location, Integer> inputs, Map<Integer, List<Location>> outputs, Set<Location> chestTerminalInputs, Set<Location> chestTerminalOutputs) {
|
||||
this.network = network;
|
||||
|
||||
|
@ -3,6 +3,9 @@ package io.github.thebusybiscuit.slimefun4.core.networks.cargo;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Tag;
|
||||
@ -43,7 +46,7 @@ final class CargoUtils {
|
||||
*
|
||||
* @return Whether this {@link Block} represents a {@link BlockState} that is an {@link InventoryHolder}
|
||||
*/
|
||||
static boolean hasInventory(Block block) {
|
||||
static boolean hasInventory(@Nullable Block block) {
|
||||
if (block == null) {
|
||||
// No block, no inventory
|
||||
return false;
|
||||
@ -83,9 +86,9 @@ final class CargoUtils {
|
||||
return false;
|
||||
}
|
||||
|
||||
static int[] getInputSlotRange(Inventory inv, ItemStack item) {
|
||||
static int[] getInputSlotRange(@Nonnull Inventory inv, @Nullable ItemStack item) {
|
||||
if (inv instanceof FurnaceInventory) {
|
||||
if (item.getType().isFuel()) {
|
||||
if (item != null && item.getType().isFuel()) {
|
||||
if (isSmeltable(item, true)) {
|
||||
// Any non-smeltable items should not land in the upper slot
|
||||
return new int[] { 0, 2 };
|
||||
@ -352,7 +355,7 @@ final class CargoUtils {
|
||||
return stack;
|
||||
}
|
||||
|
||||
static DirtyChestMenu getChestMenu(Block block) {
|
||||
static DirtyChestMenu getChestMenu(@Nonnull Block block) {
|
||||
if (BlockStorage.hasInventory(block)) {
|
||||
return BlockStorage.getInventory(block);
|
||||
}
|
||||
@ -360,7 +363,7 @@ final class CargoUtils {
|
||||
return BlockStorage.getUniversalInventory(block);
|
||||
}
|
||||
|
||||
static boolean matchesFilter(Block block, ItemStack item) {
|
||||
static boolean matchesFilter(@Nonnull Block block, @Nullable ItemStack item) {
|
||||
if (item == null || item.getType() == Material.AIR) {
|
||||
return false;
|
||||
}
|
||||
@ -443,7 +446,7 @@ final class CargoUtils {
|
||||
*
|
||||
* @return Whether the given {@link ItemStack} can be smelted or not
|
||||
*/
|
||||
private static boolean isSmeltable(ItemStack stack, boolean lazy) {
|
||||
private static boolean isSmeltable(@Nullable ItemStack stack, boolean lazy) {
|
||||
if (lazy) {
|
||||
return stack != null && Tag.LOGS.isTagged(stack.getType());
|
||||
}
|
||||
@ -452,7 +455,7 @@ final class CargoUtils {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isPotion(ItemStack item) {
|
||||
private static boolean isPotion(@Nullable ItemStack item) {
|
||||
return item != null && (item.getType() == Material.POTION || item.getType() == Material.SPLASH_POTION || item.getType() == Material.LINGERING_POTION);
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,8 @@ import java.util.Queue;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@ -277,7 +279,7 @@ abstract class ChestTerminalNetwork extends Network {
|
||||
*
|
||||
* @return The time it took to compute this operation
|
||||
*/
|
||||
protected long updateTerminals(Set<Location> providers) {
|
||||
protected long updateTerminals(@Nonnull Set<Location> providers) {
|
||||
if (terminals.isEmpty()) {
|
||||
// Performance improvement - We don't need to compute items for
|
||||
// Cargo networks without any Chest Terminals
|
||||
@ -316,7 +318,12 @@ abstract class ChestTerminalNetwork extends Network {
|
||||
item.error("An Exception was caused while trying to tick Chest terminals", x);
|
||||
}
|
||||
|
||||
return SlimefunPlugin.getProfiler().closeEntry(firstTerminal, item, timestamp);
|
||||
if (firstTerminal != null) {
|
||||
return SlimefunPlugin.getProfiler().closeEntry(firstTerminal, item, timestamp);
|
||||
}
|
||||
else {
|
||||
return System.nanoTime() - timestamp;
|
||||
}
|
||||
}
|
||||
|
||||
private void updateTerminal(Location l, BlockMenu terminal, int slot, int index, List<ItemStackAndInteger> items) {
|
||||
@ -361,7 +368,8 @@ abstract class ChestTerminalNetwork extends Network {
|
||||
}
|
||||
}
|
||||
|
||||
private List<ItemStackAndInteger> findAvailableItems(Set<Location> providers) {
|
||||
@Nonnull
|
||||
private List<ItemStackAndInteger> findAvailableItems(@Nonnull Set<Location> providers) {
|
||||
List<ItemStackAndInteger> items = new LinkedList<>();
|
||||
|
||||
for (Location l : providers) {
|
||||
|
@ -8,6 +8,9 @@ import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.function.LongConsumer;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@ -47,7 +50,7 @@ public class EnergyNet extends Network {
|
||||
private final Map<Location, EnergyNetComponent> capacitors = new HashMap<>();
|
||||
private final Map<Location, EnergyNetComponent> consumers = new HashMap<>();
|
||||
|
||||
protected EnergyNet(Location l) {
|
||||
protected EnergyNet(@Nonnull Location l) {
|
||||
super(SlimefunPlugin.getNetworkManager(), l);
|
||||
}
|
||||
|
||||
@ -57,7 +60,7 @@ public class EnergyNet extends Network {
|
||||
}
|
||||
|
||||
@Override
|
||||
public NetworkComponent classifyLocation(Location l) {
|
||||
public NetworkComponent classifyLocation(@Nonnull Location l) {
|
||||
if (regulator.equals(l)) {
|
||||
return NetworkComponent.REGULATOR;
|
||||
}
|
||||
@ -111,7 +114,7 @@ public class EnergyNet extends Network {
|
||||
}
|
||||
}
|
||||
|
||||
public void tick(Block b) {
|
||||
public void tick(@Nonnull Block b) {
|
||||
AtomicLong timestamp = new AtomicLong(SlimefunPlugin.getProfiler().newEntry());
|
||||
|
||||
if (!regulator.equals(b.getLocation())) {
|
||||
@ -204,7 +207,7 @@ public class EnergyNet extends Network {
|
||||
}
|
||||
}
|
||||
|
||||
private int tickAllGenerators(LongConsumer timings) {
|
||||
private int tickAllGenerators(@Nonnull LongConsumer timings) {
|
||||
Set<Location> explodedBlocks = new HashSet<>();
|
||||
int supply = 0;
|
||||
|
||||
@ -259,7 +262,7 @@ public class EnergyNet extends Network {
|
||||
return supply;
|
||||
}
|
||||
|
||||
private void updateHologram(Block b, double supply, double demand) {
|
||||
private void updateHologram(@Nonnull Block b, double supply, double demand) {
|
||||
if (demand > supply) {
|
||||
String netLoss = DoubleHandler.getFancyDouble(Math.abs(supply - demand));
|
||||
SimpleHologram.update(b, "&4&l- &c" + netLoss + " &7J &e\u26A1");
|
||||
@ -270,7 +273,8 @@ public class EnergyNet extends Network {
|
||||
}
|
||||
}
|
||||
|
||||
private static EnergyNetComponent getComponent(Location l) {
|
||||
@Nullable
|
||||
private static EnergyNetComponent getComponent(@Nonnull Location l) {
|
||||
SlimefunItem item = BlockStorage.check(l);
|
||||
|
||||
if (item instanceof EnergyNetComponent) {
|
||||
@ -289,7 +293,8 @@ public class EnergyNet extends Network {
|
||||
*
|
||||
* @return The {@link EnergyNet} at that {@link Location}, or a new one
|
||||
*/
|
||||
public static EnergyNet getNetworkFromLocationOrCreate(Location l) {
|
||||
@Nonnull
|
||||
public static EnergyNet getNetworkFromLocationOrCreate(@Nonnull Location l) {
|
||||
Optional<EnergyNet> energyNetwork = SlimefunPlugin.getNetworkManager().getNetworkFromLocation(l, EnergyNet.class);
|
||||
|
||||
if (energyNetwork.isPresent()) {
|
||||
|
@ -6,6 +6,10 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Keyed;
|
||||
@ -58,16 +62,19 @@ public class Research implements Keyed {
|
||||
* A unique identifier for this {@link Research}
|
||||
* @param id
|
||||
* old way of identifying researches
|
||||
* @param name
|
||||
* @param defaultName
|
||||
* The displayed name of this {@link Research}
|
||||
* @param defaultCost
|
||||
* The Cost in XP levels to unlock this {@link Research}
|
||||
*
|
||||
*/
|
||||
public Research(NamespacedKey key, int id, String name, int defaultCost) {
|
||||
public Research(@Nonnull NamespacedKey key, int id, @Nonnull String defaultName, int defaultCost) {
|
||||
Validate.notNull(key, "A NamespacedKey must be provided");
|
||||
Validate.notNull(defaultName, "A default name must be specified");
|
||||
|
||||
this.key = key;
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.name = defaultName;
|
||||
this.cost = defaultCost;
|
||||
}
|
||||
|
||||
@ -109,7 +116,8 @@ public class Research implements Keyed {
|
||||
* The {@link Player} to translate this name for.
|
||||
* @return The localized Name of this {@link Research}.
|
||||
*/
|
||||
public String getName(Player p) {
|
||||
@Nonnull
|
||||
public String getName(@Nonnull Player p) {
|
||||
String localized = SlimefunPlugin.getLocalization().getResearchName(p, key);
|
||||
return localized != null ? localized : name;
|
||||
}
|
||||
@ -159,6 +167,7 @@ public class Research implements Keyed {
|
||||
*
|
||||
* @return The current instance of {@link Research}
|
||||
*/
|
||||
@Nonnull
|
||||
public Research addItems(ItemStack... items) {
|
||||
for (ItemStack item : items) {
|
||||
SlimefunItem sfItem = SlimefunItem.getByItem(item);
|
||||
@ -176,6 +185,7 @@ public class Research implements Keyed {
|
||||
*
|
||||
* @return The Slimefun items bound to this {@link Research}.
|
||||
*/
|
||||
@Nonnull
|
||||
public List<SlimefunItem> getAffectedItems() {
|
||||
return items;
|
||||
}
|
||||
@ -187,7 +197,7 @@ public class Research implements Keyed {
|
||||
* The {@link Player} to check
|
||||
* @return Whether that {@link Player} can unlock this {@link Research}
|
||||
*/
|
||||
public boolean canUnlock(Player p) {
|
||||
public boolean canUnlock(@Nonnull Player p) {
|
||||
if (!isEnabled()) {
|
||||
return true;
|
||||
}
|
||||
@ -204,7 +214,7 @@ public class Research implements Keyed {
|
||||
* @param instant
|
||||
* Whether to unlock it instantly
|
||||
*/
|
||||
public void unlock(Player p, boolean instant) {
|
||||
public void unlock(@Nonnull Player p, boolean instant) {
|
||||
unlock(p, instant, pl -> {});
|
||||
}
|
||||
|
||||
@ -218,18 +228,20 @@ public class Research implements Keyed {
|
||||
* @param callback
|
||||
* A callback which will be run when the {@link Research} animation completed
|
||||
*/
|
||||
public void unlock(Player p, boolean instant, Consumer<Player> callback) {
|
||||
public void unlock(@Nonnull Player p, boolean instant, @Nonnull Consumer<Player> callback) {
|
||||
if (!instant) {
|
||||
Slimefun.runSync(() -> {
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 1F);
|
||||
SlimefunPlugin.getLocalization().sendMessage(p, "messages.research.progress", true, msg -> msg.replace(PLACEHOLDER_RESEARCH, getName(p)).replace("%progress%", "0%"));
|
||||
}, 10L);
|
||||
}
|
||||
|
||||
PlayerProfile.get(p, profile -> {
|
||||
if (!profile.hasUnlocked(this)) {
|
||||
Slimefun.runSync(() -> {
|
||||
ResearchUnlockEvent event = new ResearchUnlockEvent(p, this);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
|
||||
if (!event.isCancelled()) {
|
||||
if (instant) {
|
||||
finishResearch(p, profile, callback);
|
||||
@ -249,7 +261,7 @@ public class Research implements Keyed {
|
||||
});
|
||||
}
|
||||
|
||||
private void finishResearch(Player p, PlayerProfile profile, Consumer<Player> callback) {
|
||||
private void finishResearch(@Nonnull Player p, @Nonnull PlayerProfile profile, @Nonnull Consumer<Player> callback) {
|
||||
profile.setResearched(this, true);
|
||||
SlimefunPlugin.getLocalization().sendMessage(p, "messages.unlocked", true, msg -> msg.replace(PLACEHOLDER_RESEARCH, getName(p)));
|
||||
callback.accept(p);
|
||||
@ -259,7 +271,7 @@ public class Research implements Keyed {
|
||||
}
|
||||
}
|
||||
|
||||
private void playResearchAnimation(Player p) {
|
||||
private void playResearchAnimation(@Nonnull Player p) {
|
||||
for (int i = 1; i < RESEARCH_PROGRESS.length + 1; i++) {
|
||||
int j = i;
|
||||
|
||||
@ -306,7 +318,8 @@ public class Research implements Keyed {
|
||||
*
|
||||
* @return An {@link Optional} with or without the found {@link Research}
|
||||
*/
|
||||
public static Optional<Research> getResearch(NamespacedKey key) {
|
||||
@Nonnull
|
||||
public static Optional<Research> getResearch(@Nullable NamespacedKey key) {
|
||||
if (key == null) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ public class Contributor {
|
||||
return headTexture.isComputed();
|
||||
}
|
||||
|
||||
public void setTexture(@Nonnull String skin) {
|
||||
public void setTexture(@Nullable String skin) {
|
||||
headTexture.compute(skin);
|
||||
}
|
||||
|
||||
@ -177,6 +177,7 @@ public class Contributor {
|
||||
return -getTotalContributions();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public String getDisplayName() {
|
||||
return ChatColor.GRAY + githubUsername + (!githubUsername.equals(minecraftUsername) ? ChatColor.DARK_GRAY + " (MC: " + minecraftUsername + ")" : "");
|
||||
}
|
||||
|
@ -101,9 +101,9 @@ public class GitHubService {
|
||||
connectors.add(new ContributionsConnector(this, "resourcepack", 1, "Slimefun/Resourcepack", "resourcepack"));
|
||||
|
||||
// Issues and Pull Requests
|
||||
connectors.add(new GitHubIssuesTracker(this, repository, (issues, pullRequests) -> {
|
||||
this.issues = issues;
|
||||
this.pullRequests = pullRequests;
|
||||
connectors.add(new GitHubIssuesTracker(this, repository, (openIssues, openPullRequests) -> {
|
||||
this.issues = openIssues;
|
||||
this.pullRequests = openPullRequests;
|
||||
}));
|
||||
|
||||
connectors.add(new GitHubConnector(this, repository) {
|
||||
|
@ -4,6 +4,8 @@ import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -38,7 +40,7 @@ public class ThirdPartyPluginService {
|
||||
// Overridden if ExoticGarden is loaded
|
||||
private Function<Block, Optional<ItemStack>> exoticGardenIntegration = b -> Optional.empty();
|
||||
|
||||
public ThirdPartyPluginService(SlimefunPlugin plugin) {
|
||||
public ThirdPartyPluginService(@Nonnull SlimefunPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@ -92,7 +94,7 @@ public class ThirdPartyPluginService {
|
||||
});
|
||||
}
|
||||
|
||||
private boolean isPluginInstalled(String hook) {
|
||||
private boolean isPluginInstalled(@Nonnull String hook) {
|
||||
if (plugin.getServer().getPluginManager().isPluginEnabled(hook)) {
|
||||
Slimefun.getLogger().log(Level.INFO, "Hooked into Plugin: {0}", hook);
|
||||
return true;
|
||||
|
@ -10,6 +10,9 @@ import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.command.Command;
|
||||
@ -288,6 +291,7 @@ public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon {
|
||||
}
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
private String getStartupTime(long timestamp) {
|
||||
long ms = (System.nanoTime() - timestamp) / 1000000;
|
||||
|
||||
@ -332,6 +336,7 @@ public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
private Collection<String> getSupportedVersions() {
|
||||
List<String> list = new ArrayList<>();
|
||||
|
||||
@ -511,6 +516,7 @@ public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon {
|
||||
*
|
||||
* @return The {@link SlimefunPlugin} instance
|
||||
*/
|
||||
@Nullable
|
||||
public static SlimefunPlugin instance() {
|
||||
return instance;
|
||||
}
|
||||
@ -643,6 +649,7 @@ public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon {
|
||||
*
|
||||
* @return A {@link Set} of every {@link Plugin} that is dependent on Slimefun
|
||||
*/
|
||||
@Nonnull
|
||||
public static Set<Plugin> getInstalledAddons() {
|
||||
return Arrays.stream(instance.getServer().getPluginManager().getPlugins()).filter(plugin -> plugin.getDescription().getDepend().contains(instance.getName()) || plugin.getDescription().getSoftDepend().contains(instance.getName())).collect(Collectors.toSet());
|
||||
}
|
||||
|
@ -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.core.handlers.ItemUseHandler;
|
||||
@ -45,6 +47,7 @@ public abstract class SimpleSlimefunItem<T extends ItemHandler> extends Slimefun
|
||||
*
|
||||
* @return The {@link ItemHandler} that should be added to this {@link SlimefunItem}
|
||||
*/
|
||||
@Nonnull
|
||||
public abstract T getItemHandler();
|
||||
|
||||
}
|
||||
|
@ -8,7 +8,6 @@ import java.util.UUID;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.Rechargeable;
|
||||
|
@ -3,7 +3,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.medical;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
@ -25,26 +25,32 @@ public abstract class MedicalSupply<T extends ItemHandler> extends SimpleSlimefu
|
||||
}
|
||||
|
||||
/**
|
||||
* This method clears any negative {@link PotionEffect} from the given {@link Player}.
|
||||
* This method clears any negative {@link PotionEffect} from the given {@link LivingEntity}.
|
||||
*
|
||||
* @param p
|
||||
* The {@link Player}
|
||||
* @param n
|
||||
* The {@link LivingEntity} to clear the effects from.
|
||||
*/
|
||||
public void clearNegativeEffects(@Nonnull Player p) {
|
||||
if (p.hasPotionEffect(PotionEffectType.POISON)) p.removePotionEffect(PotionEffectType.POISON);
|
||||
if (p.hasPotionEffect(PotionEffectType.WITHER)) p.removePotionEffect(PotionEffectType.WITHER);
|
||||
if (p.hasPotionEffect(PotionEffectType.SLOW)) p.removePotionEffect(PotionEffectType.SLOW);
|
||||
if (p.hasPotionEffect(PotionEffectType.SLOW_DIGGING)) p.removePotionEffect(PotionEffectType.SLOW_DIGGING);
|
||||
if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS);
|
||||
if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION);
|
||||
if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS);
|
||||
if (p.hasPotionEffect(PotionEffectType.BAD_OMEN)) p.removePotionEffect(PotionEffectType.BLINDNESS);
|
||||
public void clearNegativeEffects(@Nonnull LivingEntity n) {
|
||||
if (n.hasPotionEffect(PotionEffectType.POISON)) n.removePotionEffect(PotionEffectType.POISON);
|
||||
if (n.hasPotionEffect(PotionEffectType.WITHER)) n.removePotionEffect(PotionEffectType.WITHER);
|
||||
if (n.hasPotionEffect(PotionEffectType.SLOW)) n.removePotionEffect(PotionEffectType.SLOW);
|
||||
if (n.hasPotionEffect(PotionEffectType.SLOW_DIGGING)) n.removePotionEffect(PotionEffectType.SLOW_DIGGING);
|
||||
if (n.hasPotionEffect(PotionEffectType.WEAKNESS)) n.removePotionEffect(PotionEffectType.WEAKNESS);
|
||||
if (n.hasPotionEffect(PotionEffectType.CONFUSION)) n.removePotionEffect(PotionEffectType.CONFUSION);
|
||||
if (n.hasPotionEffect(PotionEffectType.BLINDNESS)) n.removePotionEffect(PotionEffectType.BLINDNESS);
|
||||
if (n.hasPotionEffect(PotionEffectType.BAD_OMEN)) n.removePotionEffect(PotionEffectType.BLINDNESS);
|
||||
}
|
||||
|
||||
public void heal(@Nonnull Player p) {
|
||||
double health = p.getHealth() + healAmount;
|
||||
double maxHealth = p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
|
||||
p.setHealth(Math.min(health, maxHealth));
|
||||
/**
|
||||
* This method heals the given {@link LivingEntity} by the amount provided via the constructor.
|
||||
*
|
||||
* @param n
|
||||
* The {@link LivingEntity} to heal
|
||||
*/
|
||||
public void heal(@Nonnull LivingEntity n) {
|
||||
double health = n.getHealth() + healAmount;
|
||||
double maxHealth = n.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
|
||||
n.setHealth(Math.min(health, maxHealth));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3,6 +3,8 @@ package io.github.thebusybiscuit.slimefun4.utils;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -36,23 +38,28 @@ public final class ChestMenuUtils {
|
||||
|
||||
private static final MenuClickHandler CLICK_HANDLER = (p, s, i, a) -> false;
|
||||
|
||||
@Nonnull
|
||||
public static ItemStack getBackground() {
|
||||
return UI_BACKGROUND;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public static MenuClickHandler getEmptyClickHandler() {
|
||||
return CLICK_HANDLER;
|
||||
}
|
||||
|
||||
public static ItemStack getBackButton(Player p, String... lore) {
|
||||
@Nonnull
|
||||
public static ItemStack getBackButton(@Nonnull Player p, String... lore) {
|
||||
return new CustomItem(BACK_BUTTON, "&7\u21E6 " + SlimefunPlugin.getLocalization().getMessage(p, "guide.back.title"), lore);
|
||||
}
|
||||
|
||||
public static ItemStack getMenuButton(Player p) {
|
||||
@Nonnull
|
||||
public static ItemStack getMenuButton(@Nonnull Player p) {
|
||||
return new CustomItem(MENU_BUTTON, ChatColor.YELLOW + SlimefunPlugin.getLocalization().getMessage(p, "guide.title.settings"), "", "&7\u21E8 " + SlimefunPlugin.getLocalization().getMessage(p, "guide.tooltips.open-category"));
|
||||
}
|
||||
|
||||
public static ItemStack getSearchButton(Player p) {
|
||||
@Nonnull
|
||||
public static ItemStack getSearchButton(@Nonnull Player p) {
|
||||
return new CustomItem(SEARCH_BUTTON, meta -> {
|
||||
meta.setDisplayName(ChatColors.color(SlimefunPlugin.getLocalization().getMessage(p, "guide.search.name")));
|
||||
|
||||
@ -62,45 +69,50 @@ public final class ChestMenuUtils {
|
||||
});
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public static ItemStack getWikiButton() {
|
||||
return WIKI_BUTTON;
|
||||
}
|
||||
|
||||
public static ItemStack getPreviousButton(Player p, int page, int pages) {
|
||||
@Nonnull
|
||||
public static ItemStack getPreviousButton(@Nonnull Player p, int page, int pages) {
|
||||
if (pages == 1 || page == 1) {
|
||||
return new CustomItem(PREV_BUTTON_INACTIVE, meta -> {
|
||||
meta.setDisplayName(ChatColor.DARK_GRAY + "\u21E6 " + SlimefunPlugin.getLocalization().getMessage(p, "guide.pages.previous"));
|
||||
meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")"));
|
||||
});
|
||||
}
|
||||
|
||||
return new CustomItem(PREV_BUTTON_ACTIVE, meta -> {
|
||||
meta.setDisplayName(ChatColor.WHITE + "\u21E6 " + SlimefunPlugin.getLocalization().getMessage(p, "guide.pages.previous"));
|
||||
meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")"));
|
||||
});
|
||||
else {
|
||||
return new CustomItem(PREV_BUTTON_ACTIVE, meta -> {
|
||||
meta.setDisplayName(ChatColor.WHITE + "\u21E6 " + SlimefunPlugin.getLocalization().getMessage(p, "guide.pages.previous"));
|
||||
meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")"));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public static ItemStack getNextButton(Player p, int page, int pages) {
|
||||
@Nonnull
|
||||
public static ItemStack getNextButton(@Nonnull Player p, int page, int pages) {
|
||||
if (pages == 1 || page == pages) {
|
||||
return new CustomItem(NEXT_BUTTON_INACTIVE, meta -> {
|
||||
meta.setDisplayName(ChatColor.DARK_GRAY + SlimefunPlugin.getLocalization().getMessage(p, "guide.pages.next") + " \u21E8");
|
||||
meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")"));
|
||||
});
|
||||
}
|
||||
|
||||
return new CustomItem(NEXT_BUTTON_ACTIVE, meta -> {
|
||||
meta.setDisplayName(ChatColor.WHITE + SlimefunPlugin.getLocalization().getMessage(p, "guide.pages.next") + " \u21E8");
|
||||
meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")"));
|
||||
});
|
||||
else {
|
||||
return new CustomItem(NEXT_BUTTON_ACTIVE, meta -> {
|
||||
meta.setDisplayName(ChatColor.WHITE + SlimefunPlugin.getLocalization().getMessage(p, "guide.pages.next") + " \u21E8");
|
||||
meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")"));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public static void drawBackground(ChestMenu menu, int... slots) {
|
||||
public static void drawBackground(@Nonnull ChestMenu menu, int... slots) {
|
||||
for (int slot : slots) {
|
||||
menu.addItem(slot, getBackground(), getEmptyClickHandler());
|
||||
}
|
||||
}
|
||||
|
||||
public static void updateProgressbar(ChestMenu menu, int slot, int timeLeft, int time, ItemStack indicator) {
|
||||
public static void updateProgressbar(@Nonnull ChestMenu menu, int slot, int timeLeft, int time, @Nonnull ItemStack indicator) {
|
||||
Inventory inv = menu.toInventory();
|
||||
|
||||
// We don't need to update the progress bar if noone is watching :o
|
||||
@ -123,6 +135,7 @@ public final class ChestMenuUtils {
|
||||
menu.replaceExistingItem(slot, item);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public static String getProgressBar(int time, int total) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
float percentage = Math.round(((((total - time) * 100.0F) / total) * 100.0F) / 100.0F);
|
||||
@ -145,7 +158,7 @@ public final class ChestMenuUtils {
|
||||
return ChatColors.color(builder.toString());
|
||||
}
|
||||
|
||||
private static short getDurability(ItemStack item, int timeLeft, int max) {
|
||||
private static short getDurability(@Nonnull ItemStack item, int timeLeft, int max) {
|
||||
return (short) ((item.getType().getMaxDurability() / max) * timeLeft);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
package io.github.thebusybiscuit.slimefun4.utils.holograms;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.Entity;
|
||||
@ -11,7 +14,8 @@ public final class ReactorHologram {
|
||||
|
||||
private ReactorHologram() {}
|
||||
|
||||
public static ArmorStand getArmorStand(Location reactor, boolean createIfNoneExists) {
|
||||
@Nullable
|
||||
public static ArmorStand getArmorStand(@Nonnull Location reactor, boolean createIfNoneExists) {
|
||||
Location l = new Location(reactor.getWorld(), reactor.getX() + 0.5, reactor.getY() + 0.7, reactor.getZ() + 0.5);
|
||||
|
||||
for (Entity n : l.getChunk().getEntities()) {
|
||||
@ -30,7 +34,7 @@ public final class ReactorHologram {
|
||||
return hologram;
|
||||
}
|
||||
|
||||
public static void update(Location l, String name) {
|
||||
public static void update(@Nonnull Location l, @Nonnull String name) {
|
||||
Slimefun.runSync(() -> {
|
||||
ArmorStand hologram = getArmorStand(l, true);
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
package io.github.thebusybiscuit.slimefun4.utils.holograms;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
@ -19,14 +22,14 @@ public final class SimpleHologram {
|
||||
|
||||
private SimpleHologram() {}
|
||||
|
||||
public static void update(Block b, String name) {
|
||||
public static void update(@Nonnull Block b, @Nonnull String name) {
|
||||
Slimefun.runSync(() -> {
|
||||
ArmorStand hologram = getArmorStand(b, true);
|
||||
hologram.setCustomName(ChatColors.color(name));
|
||||
});
|
||||
}
|
||||
|
||||
public static void remove(Block b) {
|
||||
public static void remove(@Nonnull Block b) {
|
||||
Slimefun.runSync(() -> {
|
||||
ArmorStand hologram = getArmorStand(b, false);
|
||||
|
||||
@ -36,7 +39,8 @@ public final class SimpleHologram {
|
||||
});
|
||||
}
|
||||
|
||||
private static ArmorStand getArmorStand(Block b, boolean createIfNoneExists) {
|
||||
@Nullable
|
||||
private static ArmorStand getArmorStand(@Nonnull Block b, boolean createIfNoneExists) {
|
||||
Location l = new Location(b.getWorld(), b.getX() + 0.5, b.getY() + 0.7F, b.getZ() + 0.5);
|
||||
|
||||
for (Entity n : l.getChunk().getEntities()) {
|
||||
@ -53,11 +57,12 @@ public final class SimpleHologram {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isPossibleHologram(ArmorStand armorstand) {
|
||||
private static boolean isPossibleHologram(@Nonnull ArmorStand armorstand) {
|
||||
return armorstand.isValid() && armorstand.isSilent() && armorstand.isMarker() && !armorstand.hasGravity() && armorstand.isCustomNameVisible();
|
||||
}
|
||||
|
||||
public static ArmorStand create(Location l) {
|
||||
@Nonnull
|
||||
public static ArmorStand create(@Nonnull Location l) {
|
||||
ArmorStand armorStand = (ArmorStand) l.getWorld().spawnEntity(l, EntityType.ARMOR_STAND);
|
||||
armorStand.setVisible(false);
|
||||
armorStand.setSilent(true);
|
||||
|
@ -6,6 +6,9 @@ import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Keyed;
|
||||
@ -49,6 +52,7 @@ public class Category implements Keyed {
|
||||
* @param item
|
||||
* The {@link ItemStack} that is used to display this {@link Category}
|
||||
*/
|
||||
@ParametersAreNonnullByDefault
|
||||
public Category(NamespacedKey key, ItemStack item) {
|
||||
this(key, item, 3);
|
||||
}
|
||||
@ -65,6 +69,7 @@ public class Category implements Keyed {
|
||||
* The tier of this {@link Category}, higher tiers will make this {@link Category} appear further down in
|
||||
* the {@link SlimefunGuide}
|
||||
*/
|
||||
@ParametersAreNonnullByDefault
|
||||
public Category(NamespacedKey key, ItemStack item, int tier) {
|
||||
Validate.notNull(key, "A Category's NamespacedKey must not be null!");
|
||||
Validate.notNull(item, "A Category's ItemStack must not be null!");
|
||||
@ -101,7 +106,7 @@ public class Category implements Keyed {
|
||||
* @param item
|
||||
* the {@link SlimefunItem} that should be added to this {@link Category}
|
||||
*/
|
||||
public void add(SlimefunItem item) {
|
||||
public void add(@Nonnull SlimefunItem item) {
|
||||
Validate.notNull(item, "Cannot add null Items to a Category!");
|
||||
|
||||
if (items.contains(item)) {
|
||||
@ -118,7 +123,8 @@ public class Category implements Keyed {
|
||||
* @param item
|
||||
* the {@link SlimefunItem} that should be removed from this {@link Category}
|
||||
*/
|
||||
public void remove(SlimefunItem item) {
|
||||
public void remove(@Nonnull SlimefunItem item) {
|
||||
Validate.notNull(item, "Cannot remove null from a Category!");
|
||||
items.remove(item);
|
||||
}
|
||||
|
||||
@ -130,7 +136,8 @@ public class Category implements Keyed {
|
||||
* The Player to create this {@link ItemStack} for
|
||||
* @return A localized display item for this {@link Category}
|
||||
*/
|
||||
public ItemStack getItem(Player p) {
|
||||
@Nonnull
|
||||
public ItemStack getItem(@Nonnull Player p) {
|
||||
return new CustomItem(item, meta -> {
|
||||
String name = SlimefunPlugin.getLocalization().getCategoryName(p, getKey());
|
||||
|
||||
@ -155,6 +162,7 @@ public class Category implements Keyed {
|
||||
*
|
||||
* @return The unlocalized name of this {@link Category}
|
||||
*/
|
||||
@Nonnull
|
||||
public String getUnlocalizedName() {
|
||||
return ChatColor.stripColor(item.getItemMeta().getDisplayName());
|
||||
}
|
||||
@ -164,6 +172,7 @@ public class Category implements Keyed {
|
||||
*
|
||||
* @return the list of SlimefunItems bound to this category
|
||||
*/
|
||||
@Nonnull
|
||||
public List<SlimefunItem> getItems() {
|
||||
return items;
|
||||
}
|
||||
@ -206,7 +215,7 @@ public class Category implements Keyed {
|
||||
*
|
||||
* @return Whether this {@link Category} will be hidden to the given {@link Player}
|
||||
*/
|
||||
public boolean isHidden(Player p) {
|
||||
public boolean isHidden(@Nonnull Player p) {
|
||||
for (SlimefunItem slimefunItem : getItems()) {
|
||||
if (!slimefunItem.isHidden() && Slimefun.isEnabled(p, slimefunItem, false)) {
|
||||
return false;
|
||||
|
@ -10,6 +10,7 @@ import java.util.function.Consumer;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Material;
|
||||
@ -136,6 +137,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return the identifier of this {@link SlimefunItem}
|
||||
*/
|
||||
@Nonnull
|
||||
public final String getID() {
|
||||
return id;
|
||||
}
|
||||
@ -149,6 +151,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return The {@link ItemState} of this {@link SlimefunItem}
|
||||
*/
|
||||
@Nonnull
|
||||
public ItemState getState() {
|
||||
return state;
|
||||
}
|
||||
@ -159,6 +162,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return The {@link ItemStack} that this {@link SlimefunItem} represents
|
||||
*/
|
||||
@Nonnull
|
||||
public ItemStack getItem() {
|
||||
return item;
|
||||
}
|
||||
@ -169,6 +173,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return The {@link Category} that this {@link SlimefunItem} belongs to
|
||||
*/
|
||||
@Nonnull
|
||||
public Category getCategory() {
|
||||
return category;
|
||||
}
|
||||
@ -186,6 +191,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return The recipe output of this {@link SlimefunItem}
|
||||
*/
|
||||
@Nonnull
|
||||
public ItemStack getRecipeOutput() {
|
||||
return recipeOutput != null ? recipeOutput.clone() : item.clone();
|
||||
}
|
||||
@ -196,6 +202,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return The linked {@link Research} or null
|
||||
*/
|
||||
@Nullable
|
||||
public Research getResearch() {
|
||||
return research;
|
||||
}
|
||||
@ -205,6 +212,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return A {@link Set} of every {@link ItemSetting} for this {@link SlimefunItem}
|
||||
*/
|
||||
@Nonnull
|
||||
public Set<ItemSetting<?>> getItemSettings() {
|
||||
return itemSettings;
|
||||
}
|
||||
@ -222,6 +230,7 @@ public class SlimefunItem implements Placeable {
|
||||
* @return An {@link Optional} describing the result
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@Nonnull
|
||||
public <T> Optional<ItemSetting<T>> getItemSetting(String key, Class<T> c) {
|
||||
for (ItemSetting<?> setting : itemSettings) {
|
||||
if (setting.getKey().equals(key) && setting.isType(c)) {
|
||||
@ -490,9 +499,9 @@ public class SlimefunItem implements Placeable {
|
||||
* using {@link Research#addItems(SlimefunItem...)}
|
||||
*
|
||||
* @param research
|
||||
* The new {@link Research} for this {@link SlimefunItem}
|
||||
* The new {@link Research} for this {@link SlimefunItem}, or null
|
||||
*/
|
||||
public void setResearch(Research research) {
|
||||
public void setResearch(@Nullable Research research) {
|
||||
if (this.research != null) {
|
||||
this.research.getAffectedItems().remove(this);
|
||||
}
|
||||
@ -512,12 +521,12 @@ public class SlimefunItem implements Placeable {
|
||||
this.recipe = recipe;
|
||||
}
|
||||
|
||||
public void setRecipeType(RecipeType type) {
|
||||
public void setRecipeType(@Nonnull RecipeType type) {
|
||||
Validate.notNull(type, "The RecipeType is not allowed to be null!");
|
||||
this.recipeType = type;
|
||||
}
|
||||
|
||||
public void setCategory(Category category) {
|
||||
public void setCategory(@Nonnull Category category) {
|
||||
Validate.notNull(category, "The Category is not allowed to be null!");
|
||||
|
||||
this.category.remove(this);
|
||||
@ -533,7 +542,7 @@ public class SlimefunItem implements Placeable {
|
||||
* @param output
|
||||
* The {@link ItemStack} that will be the result of crafting this {@link SlimefunItem}
|
||||
*/
|
||||
public void setRecipeOutput(ItemStack output) {
|
||||
public void setRecipeOutput(@Nullable ItemStack output) {
|
||||
this.recipeOutput = output;
|
||||
}
|
||||
|
||||
@ -560,6 +569,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return This instance of {@link SlimefunItem}
|
||||
*/
|
||||
@Nonnull
|
||||
public SlimefunItem setUseableInWorkbench(boolean useable) {
|
||||
this.useableInWorkbench = useable;
|
||||
|
||||
@ -575,7 +585,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return Whether the given {@link ItemStack} represents this {@link SlimefunItem}
|
||||
*/
|
||||
public boolean isItem(ItemStack item) {
|
||||
public boolean isItem(@Nullable ItemStack item) {
|
||||
if (item == null) {
|
||||
return false;
|
||||
}
|
||||
@ -701,7 +711,7 @@ public class SlimefunItem implements Placeable {
|
||||
* @param page
|
||||
* The associated wiki page
|
||||
*/
|
||||
public final void addOficialWikipage(String page) {
|
||||
public final void addOficialWikipage(@Nonnull String page) {
|
||||
Validate.notNull(page, "Wiki page cannot be null.");
|
||||
wikiLink = Optional.of("https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page);
|
||||
}
|
||||
@ -714,6 +724,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return This item's wiki page
|
||||
*/
|
||||
@Nonnull
|
||||
public Optional<String> getWikipage() {
|
||||
return wikiLink;
|
||||
}
|
||||
@ -724,6 +735,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return This item's name in {@link ItemStack} form
|
||||
*/
|
||||
@Nonnull
|
||||
public final String getItemName() {
|
||||
if (item instanceof SlimefunItemStack) {
|
||||
Optional<String> name = ((SlimefunItemStack) item).getImmutableMeta().getDisplayName();
|
||||
@ -741,6 +753,7 @@ public class SlimefunItem implements Placeable {
|
||||
*
|
||||
* @return The Set of item handlers
|
||||
*/
|
||||
@Nonnull
|
||||
public Collection<ItemHandler> getHandlers() {
|
||||
return itemhandlers.values();
|
||||
}
|
||||
@ -844,11 +857,13 @@ public class SlimefunItem implements Placeable {
|
||||
}
|
||||
}
|
||||
|
||||
public static SlimefunItem getByID(String id) {
|
||||
@Nullable
|
||||
public static SlimefunItem getByID(@Nonnull String id) {
|
||||
return SlimefunPlugin.getRegistry().getSlimefunItemIds().get(id);
|
||||
}
|
||||
|
||||
public static SlimefunItem getByItem(ItemStack item) {
|
||||
@Nullable
|
||||
public static SlimefunItem getByItem(@Nullable ItemStack item) {
|
||||
if (item == null || item.getType() == Material.AIR) {
|
||||
return null;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user