Skip to content

Commit 0400a05

Browse files
authored
Improved null safety (#132)
* Infer nullity (automatically) * Fix #130 * Add null checks
1 parent 768d68f commit 0400a05

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+476
-321
lines changed

src/main/java/com/comphenix/packetwrapper/AbstractPacket.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@
2424
import com.comphenix.protocol.events.PacketContainer;
2525
import com.google.common.base.Objects;
2626
import org.bukkit.entity.Player;
27+
import org.jetbrains.annotations.*;
2728

2829
import java.lang.reflect.InvocationTargetException;
2930

3031
@SuppressWarnings("ALL")
3132
public abstract class AbstractPacket {
3233
// The packet we will be modifying
34+
@Nullable
3335
protected PacketContainer handle;
3436

3537
/**
@@ -38,7 +40,7 @@ public abstract class AbstractPacket {
3840
* @param handle - handle to the raw packet data.
3941
* @param type - the packet type.
4042
*/
41-
protected AbstractPacket(PacketContainer handle, PacketType type) {
43+
protected AbstractPacket(@Nullable PacketContainer handle, PacketType type) {
4244
// Make sure we're given a valid packet
4345
if (handle == null) {
4446
throw new IllegalArgumentException("Packet handle cannot be NULL.");
@@ -55,6 +57,7 @@ protected AbstractPacket(PacketContainer handle, PacketType type) {
5557
*
5658
* @return Raw packet data.
5759
*/
60+
@Nullable
5861
public PacketContainer getHandle() {
5962
return handle;
6063
}
@@ -103,4 +106,4 @@ public void receivePacket(Player sender) {
103106
throw new RuntimeException("Cannot recieve packet.", e);
104107
}
105108
}
106-
}
109+
}

src/main/java/com/comphenix/packetwrapper/WrapperPlayServerWindowItems.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.comphenix.protocol.PacketType;
2323
import com.comphenix.protocol.events.PacketContainer;
2424
import org.bukkit.inventory.ItemStack;
25+
import org.jetbrains.annotations.*;
2526
import ru.endlesscode.rpginventory.nms.VersionHandler;
2627

2728
import java.util.Arrays;
@@ -79,12 +80,12 @@ public List<ItemStack> getSlotData() {
7980
*
8081
* @param value - new value.
8182
*/
82-
public void setSlotData(List<ItemStack> value) {
83+
public void setSlotData(@NotNull List<ItemStack> value) {
8384
if (VersionHandler.is1_9() || VersionHandler.is1_10()) {
8485
handle.getItemArrayModifier().write(0, value.toArray(new ItemStack[value.size()]));
8586
} else {
8687
handle.getItemListModifier().write(0, value);
8788
}
8889
}
8990

90-
}
91+
}

src/main/java/ru/endlesscode/rpginventory/RPGInventory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@
3333
import org.bukkit.plugin.RegisteredServiceProvider;
3434
import org.bukkit.plugin.java.JavaPlugin;
3535
import org.bukkit.scheduler.BukkitRunnable;
36-
import org.jetbrains.annotations.Contract;
37-
import org.jetbrains.annotations.Nullable;
36+
import org.jetbrains.annotations.*;
3837

3938
import java.io.IOException;
4039
import java.nio.file.Path;
@@ -171,7 +170,7 @@ public void onEnable() {
171170
protocolManager.addPacketListener(
172171
new PacketAdapter(this, PacketType.Play.Server.RECIPES) {
173172
@Override
174-
public void onPacketSending(PacketEvent event) {
173+
public void onPacketSending(@NotNull PacketEvent event) {
175174
event.setCancelled(true);
176175
}
177176
});
@@ -376,6 +375,7 @@ private void updateConfig() {
376375
}
377376
}
378377

378+
@NotNull
379379
public Path getDataPath() {
380380
return getDataFolder().toPath();
381381
}

src/main/java/ru/endlesscode/rpginventory/RPGInventoryCommandExecutor.java

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import net.milkbowl.vault.permission.Permission;
2222

23+
import org.bukkit.*;
2324
import org.bukkit.command.Command;
2425
import org.bukkit.command.CommandExecutor;
2526
import org.bukkit.command.CommandSender;
@@ -29,6 +30,7 @@
2930

3031
import java.util.List;
3132

33+
import org.jetbrains.annotations.*;
3234
import ru.endlesscode.rpginventory.api.InventoryAPI;
3335
import ru.endlesscode.rpginventory.inventory.InventoryManager;
3436
import ru.endlesscode.rpginventory.inventory.backpack.BackpackManager;
@@ -43,7 +45,7 @@
4345
*/
4446
@SuppressWarnings("deprecation")
4547
class RPGInventoryCommandExecutor implements CommandExecutor {
46-
private static void givePet(CommandSender sender, String playerName, String petId) {
48+
private static void givePet(@NotNull CommandSender sender, String playerName, String petId) {
4749
if (validatePlayer(sender, playerName)) {
4850
Player player = RPGInventory.getInstance().getServer().getPlayer(playerName);
4951
ItemStack petItem = PetManager.getPetItem(petId);
@@ -59,7 +61,7 @@ private static void givePet(CommandSender sender, String playerName, String petI
5961
sender.sendMessage(StringUtils.coloredLine("&3Use &6/rpginv pet [&eplayer&6] [&epetId&6]"));
6062
}
6163

62-
private static void giveFood(CommandSender sender, String playerName, String foodId, String stringAmount) {
64+
private static void giveFood(@NotNull CommandSender sender, String playerName, String foodId, @NotNull String stringAmount) {
6365
if (validatePlayer(sender, playerName)) {
6466
Player player = RPGInventory.getInstance().getServer().getPlayer(playerName);
6567
ItemStack foodItem = PetManager.getFoodItem(foodId);
@@ -81,28 +83,28 @@ private static void giveFood(CommandSender sender, String playerName, String foo
8183
sender.sendMessage(StringUtils.coloredLine("&3Use &6/rpginv food [&eplayer&6] [&efoodId&6] (&eamount&6)"));
8284
}
8385

84-
private static void giveItem(CommandSender sender, String playerName, String itemId) {
86+
private static void giveItem(@NotNull CommandSender sender, String playerName, String itemId) {
8587
if (validatePlayer(sender, playerName)) {
8688
Player player = RPGInventory.getInstance().getServer().getPlayer(playerName);
87-
ItemStack petItem = ItemManager.getItem(itemId);
89+
ItemStack item = ItemManager.getItem(itemId);
8890

89-
if (petItem != null) {
90-
player.getInventory().addItem(petItem);
91-
return;
92-
} else {
91+
if (item.getType() == Material.AIR) {
9392
sender.sendMessage(StringUtils.coloredLine("&cItem '" + itemId + "' not found!"));
93+
} else {
94+
player.getInventory().addItem(item);
95+
return;
9496
}
9597
}
9698

9799
sender.sendMessage(StringUtils.coloredLine("&3Use &6/rpginv item [&eplayer&6] [&eitemId&6]"));
98100
}
99101

100-
private static void giveBackpack(CommandSender sender, String playerName, String id) {
102+
private static void giveBackpack(@NotNull CommandSender sender, String playerName, String id) {
101103
if (validatePlayer(sender, playerName)) {
102104
Player player = RPGInventory.getInstance().getServer().getPlayer(playerName);
103105
ItemStack bpItem = BackpackManager.getItem(id);
104106

105-
if (bpItem != null) {
107+
if (bpItem.getType() == Material.AIR) {
106108
player.getInventory().addItem(bpItem);
107109
return;
108110
} else {
@@ -135,7 +137,7 @@ private static void printHelp(CommandSender sender) {
135137
sender.sendMessage(StringUtils.coloredLine("&3====================================================="));
136138
}
137139

138-
private static void printList(CommandSender sender, String type) {
140+
private static void printList(@NotNull CommandSender sender, String type) {
139141
switch (type) {
140142
case "pet":
141143
case "pets":
@@ -170,7 +172,7 @@ private static void reloadPlugin(CommandSender sender) {
170172
sender.sendMessage(StringUtils.coloredLine("&e[RPGInventory] Plugin successfully reloaded!"));
171173
}
172174

173-
private static void openInventory(CommandSender sender) {
175+
private static void openInventory(@NotNull CommandSender sender) {
174176
if (!validatePlayer(sender)) {
175177
return;
176178
}
@@ -183,7 +185,7 @@ private static void openInventory(CommandSender sender) {
183185
InventoryManager.get(player).openInventory();
184186
}
185187

186-
private static void openInventory(CommandSender sender, String playerName) {
188+
private static void openInventory(@NotNull CommandSender sender, String playerName) {
187189
if (!validatePlayer(sender) || !validatePlayer(sender, playerName)) {
188190
return;
189191
}
@@ -202,7 +204,7 @@ private static boolean validatePlayer(CommandSender sender) {
202204
return validatePlayer(sender, (Player) sender);
203205
}
204206

205-
private static boolean validatePlayer(CommandSender sender, String playerName) {
207+
private static boolean validatePlayer(@NotNull CommandSender sender, String playerName) {
206208
Player player = RPGInventory.getInstance().getServer().getPlayer(playerName);
207209
if (player == null) {
208210
sender.sendMessage(StringUtils.coloredLine("&cPlayer '" + playerName + "' not found!"));
@@ -211,7 +213,7 @@ private static boolean validatePlayer(CommandSender sender, String playerName) {
211213
return validatePlayer(sender, player);
212214
}
213215

214-
private static boolean validatePlayer(CommandSender sender, Player player) {
216+
private static boolean validatePlayer(@NotNull CommandSender sender, Player player) {
215217
if (!InventoryManager.playerIsLoaded(player)) {
216218
sender.sendMessage(StringUtils.coloredLine("&cThis command not allowed here."));
217219
return false;
@@ -226,7 +228,7 @@ private static void missingRights(CommandSender sender) {
226228
}
227229

228230
@Override
229-
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
231+
public boolean onCommand(@NotNull CommandSender sender, Command command, String label, @NotNull String[] args) {
230232
Permission perms = RPGInventory.getPermissions();
231233

232234
if (args.length > 0) {

src/main/java/ru/endlesscode/rpginventory/api/InventoryAPI.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,18 @@
4040
@SuppressWarnings({"unused", "WeakerAccess"})
4141
public class InventoryAPI {
4242
/**
43-
* Checks if opened inventory is RPGInventory
43+
* Checks if opened inventory is RPGInventory.
4444
*
4545
* @param inventory - opened inventory
4646
* @return true - if opened RPGInventory, false - otherwise
4747
*/
4848
public static boolean isRPGInventory(Inventory inventory) {
4949
InventoryHolder holder = inventory.getHolder();
50-
return holder != null && holder instanceof PlayerWrapper;
50+
return holder instanceof PlayerWrapper;
5151
}
5252

5353
/**
54-
* Get all passive item from RPGInventory of specific player
54+
* Get all passive item from RPGInventory of specific player.
5555
*
5656
* @param player - the player
5757
* @return List of not null passive item
@@ -78,7 +78,7 @@ public static List<ItemStack> getPassiveItems(Player player) {
7878
}
7979

8080
/**
81-
* Get all active item from RPGInventory of specific player
81+
* Get all active item from RPGInventory of specific player.
8282
*
8383
* @param player - the player
8484
* @return List of not null active item

src/main/java/ru/endlesscode/rpginventory/event/PetEquipEvent.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public PetEquipEvent(Player player, ItemStack petItem) {
4141
this.petItem = petItem;
4242
}
4343

44+
@NotNull
4445
@SuppressWarnings("unused")
4546
public static HandlerList getHandlerList() {
4647
return handlers;

src/main/java/ru/endlesscode/rpginventory/event/PlayerInventoryLoadEvent.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.bukkit.event.Cancellable;
2323
import org.bukkit.event.HandlerList;
2424
import org.bukkit.event.player.PlayerEvent;
25+
import org.jetbrains.annotations.*;
2526

2627
/**
2728
* Created by OsipXD on 11.09.2015
@@ -35,11 +36,13 @@ private PlayerInventoryLoadEvent(Player who) {
3536
super(who);
3637
}
3738

39+
@NotNull
3840
@SuppressWarnings("unused")
3941
public static HandlerList getHandlerList() {
4042
return handlers;
4143
}
4244

45+
@NotNull
4346
@Override
4447
public HandlerList getHandlers() {
4548
return handlers;
@@ -68,4 +71,4 @@ public Post(Player who) {
6871
super(who);
6972
}
7073
}
71-
}
74+
}

src/main/java/ru/endlesscode/rpginventory/event/PlayerInventoryUnloadEvent.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.bukkit.entity.Player;
2222
import org.bukkit.event.HandlerList;
2323
import org.bukkit.event.player.PlayerEvent;
24+
import org.jetbrains.annotations.*;
2425

2526
/**
2627
* Created by OsipXD on 11.09.2015
@@ -34,11 +35,13 @@ private PlayerInventoryUnloadEvent(Player who) {
3435
super(who);
3536
}
3637

38+
@NotNull
3739
@SuppressWarnings("unused")
3840
public static HandlerList getHandlerList() {
3941
return handlers;
4042
}
4143

44+
@NotNull
4245
@Override
4346
public HandlerList getHandlers() {
4447
return handlers;

0 commit comments

Comments
 (0)