Help with quickly put together plugin

Discussion in 'Plugin Development' started by eleectricman226, Mar 29, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    eleectricman226

    So i decided to try and make a minigame for my server, but i knew that i would run into errors, anyone help? (just FYI, The import of 'Money' is my Currency plugin, and works fine)
    Main.java :
    Code:java
    1. package me.James.Survivor.Main;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandSender;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.player.PlayerJoinEvent;
    11. import org.bukkit.plugin.java.JavaPlugin;
    12.  
    13. public class Main extends JavaPlugin implements Listener{
    14.  
    15. public void onEnable(){
    16. getServer().getPluginManager().registerEvents(this, this);
    17. getServer().getPluginManager().registerEvents(new Game(), this);
    18. }
    19. @EventHandler
    20. public void onPlayerJoinUpdate(PlayerJoinEvent e){
    21. Player player = e.getPlayer();
    22. e.setJoinMessage(ChatColor.DARK_RED + "[" + ChatColor.GOLD + "Survivor" + ChatColor.DARK_RED + "]" + ChatColor.GREEN + "Player " + player.getName() + " Has Joined! (" + ChatColor.AQUA + Bukkit.getOnlinePlayers().length + ChatColor.GREEN + "/" + ChatColor.AQUA + Bukkit.getMaxPlayers() + ChatColor.GREEN + ")");
    23. if(Bukkit.getOnlinePlayers().length > 10){
    24. Game.startGame();
    25. }
    26. }
    27. @Override
    28. public boolean onCommand(CommandSender sender, Command command,String label, String[] args) {
    29. if(label.equalsIgnoreCase("game") && args[0].equalsIgnoreCase("force")){
    30. Game.startGame();
    31. }
    32. return false;
    33. }
    34. }

    Game.java :
    Code:java
    1. package me.James.Survivor.Main;
    2.  
    3. import java.util.Random;
    4.  
    5. import me.James.Curency.Main.Money;
    6.  
    7. import org.bukkit.Bukkit;
    8. import org.bukkit.ChatColor;
    9. import org.bukkit.Location;
    10. import org.bukkit.Material;
    11. import org.bukkit.World;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.event.EventHandler;
    14. import org.bukkit.event.Listener;
    15. import org.bukkit.event.entity.PlayerDeathEvent;
    16. import org.bukkit.inventory.ItemStack;
    17. import org.bukkit.inventory.meta.ItemMeta;
    18. import org.bukkit.plugin.java.JavaPlugin;
    19.  
    20. public class Game extends JavaPlugin implements Listener{
    21. static World world = Bukkit.getWorld("game");
    22. public static void startGame() {
    23. Bukkit.broadcastMessage(ChatColor.RED + "[" + ChatColor.GOLD + "Survivor" + ChatColor.RED + "]" + ChatColor.DARK_GREEN + "Starting!");
    24. spawnAllPlayers();
    25. giveGameItems();
    26. }
    27.  
    28.  
    29.  
    30. public static void giveGameItems(){
    31. for(Player player : Bukkit.getServer().getOnlinePlayers()){
    32. ItemStack sword = new ItemStack(Material.STONE_SWORD);
    33. ItemMeta swordM = sword.getItemMeta();
    34. ItemStack bow = new ItemStack(Material.BOW);
    35. ItemMeta bowM = bow.getItemMeta();
    36. ItemStack helm = new ItemStack(Material.LEATHER_HELMET);
    37. ItemMeta helmM = helm.getItemMeta();
    38. ItemStack chest = new ItemStack(Material.LEATHER_CHESTPLATE);
    39. ItemMeta chestM = chest.getItemMeta();
    40. ItemStack legs = new ItemStack(Material.LEATHER_LEGGINGS);
    41. ItemMeta legsM= legs.getItemMeta();
    42. ItemStack boots = new ItemStack(Material.LEATHER_BOOTS);
    43. ItemMeta bootsM = boots.getItemMeta();
    44. ItemStack arrow = new ItemStack(Material.ARROW);
    45.  
    46. swordM.setDisplayName(ChatColor.GRAY + "Stone Sword");
    47. bowM.setDisplayName(ChatColor.AQUA + "Bow");
    48. helmM.setDisplayName(ChatColor.GOLD + "Helmet");
    49. chestM.setDisplayName(ChatColor.GOLD + "Chestplate");
    50. legsM.setDisplayName(ChatColor.GOLD + "Leggings");
    51. bootsM.setDisplayName(ChatColor.GOLD + "Boots");
    52. sword.setItemMeta(swordM);
    53. bow.setItemMeta(bowM);
    54. helm.setItemMeta(helmM);
    55. chest.setItemMeta(chestM);
    56. legs.setItemMeta(legsM);
    57. boots.setItemMeta(bootsM);
    58. player.getInventory().addItem(bow);
    59. player.getInventory().addItem(sword);
    60. player.getInventory().addItem(arrow);
    61. player.getInventory().setHelmet(helm);
    62. player.getInventory().setChestplate(chest);
    63. player.getInventory().setLeggings(legs);
    64. player.getInventory().setBoots(boots);
    65. }
    66. }
    67.  
    68. @SuppressWarnings({ "null", "deprecation" })
    69. public static void spawnAllPlayers(){
    70. int posX;
    71. int posY;
    72. int posZ;
    73. Location loc = null;
    74. Random random = new Random();
    75. int randomNum = random.nextInt(11);
    76. for(Player player : Bukkit.getServer().getOnlinePlayers()){
    77. player.setHealth(20);
    78. player.setSaturation(100F);
    79. if(randomNum == 0){
    80. posX = 164;
    81. posY = 104;
    82. posZ = -151;
    83. loc.setWorld(world);
    84. loc.setX(posX);
    85. loc.setY(posY);
    86. loc.setZ(posZ);
    87. player.teleport(loc);
    88. }else if(randomNum == 1){
    89. posX = 93;
    90. posY = 122;
    91. posZ = -139;
    92. loc.setWorld(world);
    93. loc.setX(posX);
    94. loc.setY(posY);
    95. loc.setZ(posZ);
    96. player.teleport(loc);
    97. }else if(randomNum == 2){
    98. posX = 8;
    99. posY = 113;
    100. posZ = -170;
    101. loc.setWorld(world);
    102. loc.setX(posX);
    103. loc.setY(posY);
    104. loc.setZ(posZ);
    105. player.teleport(loc);
    106. }else if(randomNum == 3){
    107. posX = 34;
    108. posY = 113;
    109. posZ = -72;
    110. loc.setWorld(world);
    111. loc.setX(posX);
    112. loc.setY(posY);
    113. loc.setZ(posZ);
    114. player.teleport(loc);
    115. }else if(randomNum == 4){
    116. posX = 240;
    117. posY = 124;
    118. posZ = -233;
    119. loc.setWorld(world);
    120. loc.setX(posX);
    121. loc.setY(posY);
    122. loc.setZ(posZ);
    123. player.teleport(loc);
    124. }else if(randomNum == 5){
    125. posX = 37;
    126. posY = 122;
    127. posZ = -233;
    128. loc.setWorld(world);
    129. loc.setX(posX);
    130. loc.setY(posY);
    131. loc.setZ(posZ);
    132. player.teleport(loc);
    133. }else if(randomNum == 6){
    134. posX = 112;
    135. posY = 125;
    136. posZ = -42;
    137. loc.setWorld(world);
    138. loc.setX(posX);
    139. loc.setY(posY);
    140. loc.setZ(posZ);
    141. player.teleport(loc);
    142. }else if(randomNum == 7){
    143. posX = -34;
    144. posY = 114;
    145. posZ = -170;
    146. loc.setWorld(world);
    147. loc.setX(posX);
    148. loc.setY(posY);
    149. loc.setZ(posZ);
    150. player.teleport(loc);
    151. }else if(randomNum == 8){
    152. posX = 215;
    153. posY = 115;
    154. posZ = -50;
    155. loc.setWorld(world);
    156. loc.setX(posX);
    157. loc.setY(posY);
    158. loc.setZ(posZ);
    159. player.teleport(loc);
    160. }else if(randomNum == 9){
    161. posX = 221;
    162. posY = 114;
    163. posZ = -123;
    164. loc.setWorld(world);
    165. loc.setX(posX);
    166. loc.setY(posY);
    167. loc.setZ(posZ);
    168. player.teleport(loc);
    169. }else if(randomNum == 10){
    170. posX = 143;
    171. posY = 119;
    172. posZ = -58;
    173. loc.setWorld(world);
    174. loc.setX(posX);
    175. loc.setY(posY);
    176. loc.setZ(posZ);
    177. player.teleport(loc);
    178. }
    179.  
    180. }
    181. }
    182. @SuppressWarnings({ "null", "deprecation" })
    183. public static void respawnPlayer(Player player){
    184. player.setHealth(20);
    185. player.setSaturation(100F);
    186. int posX;
    187. int posY;
    188. int posZ;
    189. Location loc = null;
    190. Random random = new Random();
    191. int randomNum = random.nextInt(11);
    192. if(randomNum == 0){
    193. posX = 164;
    194. posY = 104;
    195. posZ = -151;
    196. loc.setWorld(world);
    197. loc.setX(posX);
    198. loc.setY(posY);
    199. loc.setZ(posZ);
    200. player.teleport(loc);
    201. }else if(randomNum == 1){
    202. posX = 93;
    203. posY = 122;
    204. posZ = -139;
    205. loc.setWorld(world);
    206. loc.setX(posX);
    207. loc.setY(posY);
    208. loc.setZ(posZ);
    209. player.teleport(loc);
    210. }else if(randomNum == 2){
    211. posX = 8;
    212. posY = 113;
    213. posZ = -170;
    214. loc.setWorld(world);
    215. loc.setX(posX);
    216. loc.setY(posY);
    217. loc.setZ(posZ);
    218. player.teleport(loc);
    219. }else if(randomNum == 3){
    220. posX = 34;
    221. posY = 113;
    222. posZ = -72;
    223. loc.setWorld(world);
    224. loc.setX(posX);
    225. loc.setY(posY);
    226. loc.setZ(posZ);
    227. player.teleport(loc);
    228. }else if(randomNum == 4){
    229. posX = 240;
    230. posY = 124;
    231. posZ = -233;
    232. loc.setWorld(world);
    233. loc.setX(posX);
    234. loc.setY(posY);
    235. loc.setZ(posZ);
    236. player.teleport(loc);
    237. }else if(randomNum == 5){
    238. posX = 37;
    239. posY = 122;
    240. posZ = -233;
    241. loc.setWorld(world);
    242. loc.setX(posX);
    243. loc.setY(posY);
    244. loc.setZ(posZ);
    245. player.teleport(loc);
    246. }else if(randomNum == 6){
    247. posX = 112;
    248. posY = 125;
    249. posZ = -42;
    250. loc.setWorld(world);
    251. loc.setX(posX);
    252. loc.setY(posY);
    253. loc.setZ(posZ);
    254. player.teleport(loc);
    255. }else if(randomNum == 7){
    256. posX = -34;
    257. posY = 114;
    258. posZ = -170;
    259. loc.setWorld(world);
    260. loc.setX(posX);
    261. loc.setY(posY);
    262. loc.setZ(posZ);
    263. player.teleport(loc);
    264. }else if(randomNum == 8){
    265. posX = 215;
    266. posY = 115;
    267. posZ = -50;
    268. loc.setWorld(world);
    269. loc.setX(posX);
    270. loc.setY(posY);
    271. loc.setZ(posZ);
    272. player.teleport(loc);
    273. }else if(randomNum == 9){
    274. posX = 221;
    275. posY = 114;
    276. posZ = -123;
    277. loc.setWorld(world);
    278. loc.setX(posX);
    279. loc.setY(posY);
    280. loc.setZ(posZ);
    281. player.teleport(loc);
    282. }else if(randomNum == 10){
    283. posX = 143;
    284. posY = 119;
    285. posZ = -58;
    286. loc.setWorld(world);
    287. loc.setX(posX);
    288. loc.setY(posY);
    289. loc.setZ(posZ);
    290. player.teleport(loc);
    291. }
    292. }
    293.  
    294.  
    295. @EventHandler
    296. public void playerDieEvent(PlayerDeathEvent e){
    297. Player player = e.getEntity();
    298. Player killer = e.getEntity().getKiller();
    299. player.getInventory().clear();
    300. ItemStack air = new ItemStack(Material.AIR);
    301. player.getInventory().setBoots(air);
    302. player.getInventory().setChestplate(air);
    303. player.getInventory().setLeggings(air);
    304. player.getInventory().setHelmet(air);
    305. respawnPlayer(player);
    306. ItemStack arrow = new ItemStack(Material.ARROW);
    307. killer.getInventory().addItem(arrow);
    308. killer.sendMessage(ChatColor.DARK_RED + "[" + ChatColor.GOLD + "Survivor" + ChatColor.DARK_RED + "]" + ChatColor.GREEN + "You Killed " + ChatColor.RED + player.getName());
    309. killer.sendMessage(ChatColor.DARK_RED + "[" + ChatColor.GOLD + "Survivor" + ChatColor.DARK_RED + "]" + ChatColor.GREEN + "You Have Earned " + ChatColor.AQUA + "1" + ChatColor.DARK_PURPLE + " Titanium!");
    310. Money.giveCurrency(player, "1");
    311. }
    312.  
    313. }
    314.  

    plugin.yml :
    Code:
    name: Survivor
    main: me.James.Survivor.Main.Main
    version: 0.1
    description: >
                MiniGame Plugin
    commands:
      game:
        description: Game Commands!
    Stack Trace :
    Code:
    [15:30:43] [Server thread/INFO]: eleectricman226 issued server command: /game force
    [15:30:43] [Server thread/INFO]: [Survivor]Starting!
    [15:30:43] [Server thread/ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'game' in plugin Survivor v0.1
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:196) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:542) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerConnection.java:932) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:814) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    Caused by: java.lang.NullPointerException
        at me.James.Survivor.Main.Game.spawnAllPlayers(Game.java:92) ~[?:?]
        at me.James.Survivor.Main.Game.startGame(Game.java:24) ~[?:?]
        at me.James.Survivor.Main.Main.onCommand(Main.java:30) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        ... 13 more
    Yes, i know some of the code could be simplifyed, but right now i just need to get an understanding on what i need to fix, Thanks.
     
  2. Offline

    2MBKindiegames

    Add this between line 76 and 77:

     
  3. Offline

    eleectricman226

    No, the cords represent different spawn points in the map, I'm not trying to teloport each player to each other.
     
  4. Offline

    nlthijs48

    eleectricman226 Then just use this:
    Code:java
    1. Location loc = new Location(world, posX, posY, posZ);

    Instead of:
    Code:java
    1. loc.setWorld(world);
    2. loc.setX(posX);
    3. loc.setY(posY);
    4. loc.setZ(posZ);

    Because you need to save a Location in loc before you can call a method on it, that is why you get the NullPointerException.
    Also don't use the "@SuppressWarnings({"null", "deprecation"})" just fix the errors.
     
  5. Offline

    AoH_Ruthless

    eleectricman226 nlthijs48
    There isn't really a point to setting posx, y, z every single if block. You can just do this:
    Code:java
    1. loc = new Location (world, 8, 113, -170) // Those numbers were values in OP's code.


    Also, stahp extending JavaPlugin in more than one class.
    It's also better to have all the listeners in one area for better readability and organization.


    Why are you suppressing null warnings... just get rid of whatever is null because it wont execute anyways. Ninja'd by nlthijs48 :(
     
  6. Offline

    2MBKindiegames

    eleectricman226
    I know, but the Location must be first created. A few lines later, you override it anyway! Trust me, it'll work!
     
Thread Status:
Not open for further replies.

Share This Page