PageRenderTime 57ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/SpoutBackpack/src/me/neatmonster/spoutbackpack/SpoutBackpack.java

https://github.com/st-remy/SpoutBackpack
Java | 968 lines | 933 code | 35 blank | 0 comment | 357 complexity | 4faef0017e5da62527e59edeff53b317 MD5 | raw file
  1. package me.neatmonster.spoutbackpack;
  2. import java.io.File;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.logging.Logger;
  8. import me.neatmonster.spoutbackpack.SBLanguageInterface.Language;
  9. import org.anjocaido.groupmanager.GroupManager;
  10. import org.bukkit.ChatColor;
  11. import org.bukkit.Location;
  12. import org.bukkit.World;
  13. import org.bukkit.command.Command;
  14. import org.bukkit.command.CommandSender;
  15. import org.bukkit.entity.Player;
  16. import org.bukkit.event.Event.Priority;
  17. import org.bukkit.event.Event.Type;
  18. import org.bukkit.inventory.Inventory;
  19. import org.bukkit.inventory.ItemStack;
  20. import org.bukkit.plugin.Plugin;
  21. import org.bukkit.plugin.PluginManager;
  22. import org.bukkit.plugin.java.JavaPlugin;
  23. import org.bukkit.util.config.Configuration;
  24. import org.getspout.spout.inventory.CustomInventory;
  25. import org.getspout.spoutapi.gui.GenericLabel;
  26. import ru.tehkode.permissions.PermissionManager;
  27. import ru.tehkode.permissions.bukkit.PermissionsEx;
  28. import com.garbagemule.MobArena.MobArenaHandler;
  29. import com.matejdro.bukkit.jail.Jail;
  30. import com.matejdro.bukkit.jail.JailAPI;
  31. import com.nijiko.permissions.PermissionHandler;
  32. import com.nijikokun.bukkit.Permissions.Permissions;
  33. import com.nijikokun.register.payment.Method;
  34. import com.nijikokun.register.payment.Method.MethodAccount;
  35. import com.nijikokun.register.payment.Methods;
  36. import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
  37. import com.sk89q.worldguard.protection.regions.ProtectedRegion;
  38. public class SpoutBackpack extends JavaPlugin {
  39. public Configuration config;
  40. public boolean workbenchEnabled;
  41. public boolean workbenchInventory;
  42. public int blackOrWhiteList;
  43. public List<Integer> whitelist;
  44. public List<Integer> blacklist;
  45. protected List<String> noBackpackRegions;
  46. public List<Player> portals = new ArrayList<Player>();
  47. public String inventoryName;
  48. public boolean useWidget;
  49. public int widgetX;
  50. public int widgetY;
  51. public double price18;
  52. public double price27;
  53. public double price36;
  54. public double price45;
  55. public double price54;
  56. public int saveTime;
  57. private int saveTaskId;
  58. public boolean logSaves;
  59. public HashMap<String, ItemStack[]> inventories = new HashMap<String, ItemStack[]>();
  60. public HashMap<String, Inventory> openedInventories = new HashMap<String, Inventory>();
  61. public HashMap<String, String> openedInventoriesOthers = new HashMap<String, String>();
  62. public HashMap<String, GenericLabel> widgets = new HashMap<String, GenericLabel>();
  63. public static Logger logger = Logger.getLogger("minecraft");
  64. public String logTag = "[SpoutBackpack]";
  65. public SBLanguageInterface li;
  66. public PermissionHandler permissionHandler;
  67. public Plugin permissionsBukkitPlugin;
  68. public PermissionManager permissionsEx;
  69. public static GroupManager groupManager;
  70. public Method Method = null;
  71. public static MobArenaHandler mobArenaHandler;
  72. public static JailAPI jail;
  73. @Override
  74. public void onEnable() {
  75. loadOrReloadConfiguration();
  76. li = new SBLanguageInterface(loadLanguage());
  77. if (config.getBoolean("Permissions.UsePermissions?", true) == false) {
  78. if (config.getBoolean("Permissions.UsePermissionsBukkit?", false) == false) {
  79. if (config.getBoolean("Permissions.UsePermissionsEx?", false) == false) {
  80. if (config
  81. .getBoolean("Permissions.UseGroupManager?", false) == false) {
  82. setupOPSystem();
  83. } else {
  84. setupGroupManager();
  85. }
  86. } else {
  87. setupPermissionsEx();
  88. }
  89. } else {
  90. setupPermissionsBukkit();
  91. }
  92. } else {
  93. setupPermissions();
  94. }
  95. setupMobArena();
  96. setupJail();
  97. setupRegister();
  98. PluginManager pm = this.getServer().getPluginManager();
  99. pm.registerEvent(Type.CUSTOM_EVENT, new SBInputListener(this),
  100. Priority.Normal, this);
  101. pm.registerEvent(Type.CUSTOM_EVENT, new SBInventoryListener(this),
  102. Priority.Normal, this);
  103. pm.registerEvent(Type.PLAYER_JOIN, new SBPlayerListener(this),
  104. Priority.Normal, this);
  105. pm.registerEvent(Type.PLAYER_TELEPORT, new SBPlayerListener(this),
  106. Priority.Monitor, this);
  107. pm.registerEvent(Type.PLAYER_PORTAL, new SBPlayerListener(this),
  108. Priority.Monitor, this);
  109. pm.registerEvent(Type.PLAYER_KICK, new SBPlayerListener(this),
  110. Priority.Normal, this);
  111. pm.registerEvent(Type.PLAYER_QUIT, new SBPlayerListener(this),
  112. Priority.Normal, this);
  113. pm.registerEvent(Type.ENTITY_DEATH, new SBEntityListener(this),
  114. Priority.Normal, this);
  115. long delay = 20L * 60 * saveTime;
  116. saveTaskId = this
  117. .getServer()
  118. .getScheduler()
  119. .scheduleSyncRepeatingTask(this, new SBInventorySaveTask(this),
  120. delay, delay);
  121. logger.info(logTag + " Version " + getDescription().getVersion()
  122. + " is now enabled.");
  123. for (Player player : this.getServer().getOnlinePlayers()) {
  124. this.loadInventory(player, player.getWorld());
  125. }
  126. logger.info(logTag + li.getMessage("inventoriesloaded"));
  127. }
  128. private void loadOrReloadConfiguration() {
  129. this.config = this.getConfiguration();
  130. config.load();
  131. config.getString("Language", "English");
  132. config.getBoolean("Permissions.UsePermissions?", true);
  133. config.getBoolean("Permissions.UsePermissionsBukkit?", false);
  134. config.getBoolean("Permissions.UsePermissionsEx?", false);
  135. config.getBoolean("Permissions.UseGroupManager?", false);
  136. config.getString("Backpack.Key", "B");
  137. inventoryName = config.getString("Backpack.Name", "Backpack");
  138. config.getBoolean("Backpack.world_name.InventoriesShare?", true);
  139. noBackpackRegions = config.getStringList(
  140. "Backpack.RegionWhereBackpacksAreDisabled", null);
  141. if (noBackpackRegions.size() == 0) {
  142. noBackpackRegions.add("region1");
  143. noBackpackRegions.add("region2");
  144. config.setProperty("Backpack.RegionWhereBackpacksAreDisabled",
  145. noBackpackRegions);
  146. }
  147. price18 = config.getDouble("Backpack.Price.18", 10.00);
  148. price27 = config.getDouble("Backpack.Price.27", 20.00);
  149. price36 = config.getDouble("Backpack.Price.36", 30.00);
  150. price45 = config.getDouble("Backpack.Price.45", 40.00);
  151. price54 = config.getDouble("Backpack.Price.54", 50.00);
  152. blackOrWhiteList = config.getInt("Backpack.NoneBlackOrWhiteList?", 0);
  153. if (blackOrWhiteList != 1 && blackOrWhiteList != 2) {
  154. blackOrWhiteList = 0;
  155. }
  156. whitelist = config.getIntList("Backpack.Whitelist", null);
  157. if (whitelist.size() == 0) {
  158. whitelist.add(262);
  159. config.setProperty("Backpack.Whitelist", whitelist);
  160. }
  161. blacklist = config.getIntList("Backpack.Blacklist", null);
  162. if (blacklist.size() == 0) {
  163. blacklist.add(264);
  164. config.setProperty("Backpack.Blacklist", blacklist);
  165. }
  166. workbenchEnabled = config.getBoolean("Workbench.Enabled?", true);
  167. config.getString("Workbench.Key", "N");
  168. workbenchInventory = config.getBoolean("Workbench.NeededInInventory?",
  169. false);
  170. useWidget = config.getBoolean("Widget.Enabled?", true);
  171. widgetX = config.getInt("Widget.PositionX", 3);
  172. widgetY = config.getInt("Widget.PositionY", 5);
  173. logSaves = config.getBoolean("Saves.Log?", false);
  174. saveTime = config.getInt("Saves.Interval(InMinutes)", 5);
  175. config.save();
  176. }
  177. private Language loadLanguage() {
  178. this.config = this.getConfiguration();
  179. config.load();
  180. String languageInConfig = config.getString("Language", "English");
  181. if (languageInConfig.equalsIgnoreCase("English")) {
  182. return Language.ENGLISH;
  183. } else if (languageInConfig.equalsIgnoreCase("French")) {
  184. return Language.FRENCH;
  185. } else {
  186. logger.warning(logTag + " Language set to ENGLISH by default.");
  187. logger.warning(logTag + " Invalid property in configuration file!");
  188. return Language.ENGLISH;
  189. }
  190. }
  191. private boolean setupPermissions() {
  192. Plugin permissionsPlugin = this.getServer().getPluginManager()
  193. .getPlugin("Permissions");
  194. if (permissionsPlugin == null) {
  195. return false;
  196. } else {
  197. permissionHandler = ((Permissions) permissionsPlugin).getHandler();
  198. logger.info(logTag + li.getMessage("permissionsfound"));
  199. return true;
  200. }
  201. }
  202. private boolean setupPermissionsBukkit() {
  203. permissionsBukkitPlugin = this.getServer().getPluginManager()
  204. .getPlugin("PermissionsBukkit");
  205. if (permissionsBukkitPlugin == null) {
  206. return false;
  207. } else {
  208. logger.info(logTag + li.getMessage("permissionsbukkitfound"));
  209. return true;
  210. }
  211. }
  212. private boolean setupPermissionsEx() {
  213. if (getServer().getPluginManager().isPluginEnabled("PermissionsEx")) {
  214. permissionsEx = PermissionsEx.getPermissionManager();
  215. logger.info(logTag + li.getMessage("permissionsexfound"));
  216. return true;
  217. } else {
  218. return false;
  219. }
  220. }
  221. private boolean setupGroupManager() {
  222. Plugin groupManagerPlugin = this.getServer().getPluginManager()
  223. .getPlugin("GroupManager");
  224. if (groupManagerPlugin == null) {
  225. return false;
  226. } else {
  227. groupManager = (GroupManager) groupManagerPlugin;
  228. logger.info(logTag + li.getMessage("groupmanagerfound"));
  229. return true;
  230. }
  231. }
  232. private void setupOPSystem() {
  233. if (permissionHandler == null && permissionsBukkitPlugin == null) {
  234. logger.info(logTag + li.getMessage("opsystemfound"));
  235. }
  236. }
  237. WorldGuardPlugin getWorldGuard() {
  238. Plugin plugin = getServer().getPluginManager().getPlugin("WorldGuard");
  239. if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
  240. return null;
  241. }
  242. return (WorldGuardPlugin) plugin;
  243. }
  244. private void setupMobArena() {
  245. if (mobArenaHandler != null) {
  246. return;
  247. }
  248. Plugin mobArenaPlugin = this.getServer().getPluginManager()
  249. .getPlugin("MobArena");
  250. if (mobArenaPlugin == null) {
  251. return;
  252. }
  253. mobArenaHandler = new MobArenaHandler();
  254. logger.info(logTag + li.getMessage("mobarenafound"));
  255. return;
  256. }
  257. private void setupJail() {
  258. Plugin jailPlugin = getServer().getPluginManager().getPlugin("Jail");
  259. if (jailPlugin != null) {
  260. jail = ((Jail) jailPlugin).API;
  261. logger.info(logTag + li.getMessage("jailfound"));
  262. return;
  263. } else {
  264. return;
  265. }
  266. }
  267. private void setupRegister() {
  268. Methods.setMethod(getServer().getPluginManager());
  269. Method = Methods.getMethod();
  270. if (Method != null)
  271. logger.info(logTag + li.getMessage("paymentmethodfound")
  272. + Method.getName() + " v" + Method.getVersion() + ").");
  273. else
  274. logger.info(logTag + li.getMessage("paymentmethodwasdisabled"));
  275. }
  276. public void loadInventory(Player player, World world) {
  277. if (inventories.get(player.getName()) != null) {
  278. return;
  279. }
  280. File saveFile;
  281. if (config.getBoolean("Backpack." + world.getName()
  282. + ".InventoriesShare?", true)) {
  283. saveFile = new File(this.getDataFolder() + File.separator
  284. + "inventories", player.getName() + ".yml");
  285. } else {
  286. saveFile = new File(this.getDataFolder() + File.separator
  287. + "inventories", player.getName() + "_" + world.getName()
  288. + ".yml");
  289. }
  290. Configuration config = new Configuration(saveFile);
  291. config.load();
  292. int size = allowedSize(world, player, true);
  293. CustomInventory inv = new CustomInventory(
  294. size, this.inventoryName);
  295. if (saveFile.exists()) {
  296. Integer i = 0;
  297. for (i = 0; i < size; i++) {
  298. ItemStack item = new ItemStack(0, 0);
  299. item.setAmount(config.getInt(i.toString() + ".amount", 0));
  300. item.setTypeId(config.getInt(i.toString() + ".type", 0));
  301. Integer durability = config.getInt(
  302. i.toString() + ".durability", 0);
  303. item.setDurability(Short.parseShort(durability.toString()));
  304. inv.setItem(i, item);
  305. }
  306. }
  307. this.inventories.put(player.getName(), inv.getContents());
  308. }
  309. public void updateInventory(Player player, ItemStack[] is) {
  310. this.inventories.put(player.getName(), is);
  311. }
  312. public int allowedSize(World world, Player player,
  313. boolean configurationCheck) {
  314. int size = 9;
  315. if (permissionHandler != null) {
  316. if (permissionHandler.has(world.getName(), player.getName(),
  317. "backpack.size54")) {
  318. size = 54;
  319. } else if (permissionHandler.has(world.getName(), player.getName(),
  320. "backpack.size45")) {
  321. size = 45;
  322. } else if (permissionHandler.has(world.getName(), player.getName(),
  323. "backpack.size36")) {
  324. size = 36;
  325. } else if (permissionHandler.has(world.getName(), player.getName(),
  326. "backpack.size27")) {
  327. size = 27;
  328. } else if (permissionHandler.has(world.getName(), player.getName(),
  329. "backpack.size18")) {
  330. size = 18;
  331. } else if (permissionHandler.has(world.getName(), player.getName(),
  332. "backpack.size9")) {
  333. size = 9;
  334. }
  335. } else if (permissionsBukkitPlugin != null) {
  336. if (player.hasPermission("backpack.size54")) {
  337. size = 54;
  338. } else if (player.hasPermission("backpack.size45")) {
  339. size = 45;
  340. } else if (player.hasPermission("backpack.size36")) {
  341. size = 36;
  342. } else if (player.hasPermission("backpack.size27")) {
  343. size = 27;
  344. } else if (player.hasPermission("backpack.size18")) {
  345. size = 18;
  346. } else if (player.hasPermission("backpack.size9")) {
  347. size = 9;
  348. }
  349. } else if (permissionsEx != null) {
  350. if (permissionsEx.has(player.getName(), "backpack.size54", player
  351. .getWorld().getName())) {
  352. size = 54;
  353. } else if (permissionsEx.has(player.getName(), "backpack.size45",
  354. player.getWorld().getName())) {
  355. size = 45;
  356. } else if (permissionsEx.has(player.getName(), "backpack.size36",
  357. player.getWorld().getName())) {
  358. size = 36;
  359. } else if (permissionsEx.has(player.getName(), "backpack.size27",
  360. player.getWorld().getName())) {
  361. size = 27;
  362. } else if (permissionsEx.has(player.getName(), "backpack.size18",
  363. player.getWorld().getName())) {
  364. size = 18;
  365. } else if (permissionsEx.has(player.getName(), "backpack.size9",
  366. player.getWorld().getName())) {
  367. size = 9;
  368. }
  369. } else if (groupManager != null) {
  370. if (groupManager.getWorldsHolder().getWorldPermissions(player)
  371. .has(player, "backpack.size54")) {
  372. size = 54;
  373. } else if (groupManager.getWorldsHolder()
  374. .getWorldPermissions(player).has(player, "backpack.size45")) {
  375. size = 45;
  376. } else if (groupManager.getWorldsHolder()
  377. .getWorldPermissions(player).has(player, "backpack.size36")) {
  378. size = 36;
  379. } else if (groupManager.getWorldsHolder()
  380. .getWorldPermissions(player).has(player, "backpack.size27")) {
  381. size = 27;
  382. } else if (groupManager.getWorldsHolder()
  383. .getWorldPermissions(player).has(player, "backpack.size18")) {
  384. size = 18;
  385. } else if (groupManager.getWorldsHolder()
  386. .getWorldPermissions(player).has(player, "backpack.size9")) {
  387. size = 9;
  388. }
  389. } else {
  390. if (player.isOp() == true) {
  391. size = 54;
  392. } else {
  393. size = 9;
  394. }
  395. }
  396. if (configurationCheck) {
  397. if (allowedSizeInConfig(world, player) > size) {
  398. size = allowedSizeInConfig(world, player);
  399. }
  400. }
  401. return size;
  402. }
  403. public int allowedSizeInConfig(World world, Player player) {
  404. File saveFile;
  405. if (config.getBoolean("Backpack." + world.getName()
  406. + ".InventoriesShare?", true)) {
  407. saveFile = new File(this.getDataFolder() + File.separator
  408. + "inventories", player.getName() + ".yml");
  409. } else {
  410. saveFile = new File(this.getDataFolder() + File.separator
  411. + "inventories", player.getName() + "_" + world.getName()
  412. + ".yml");
  413. }
  414. Configuration config = new Configuration(saveFile);
  415. config.load();
  416. return config.getInt("Size", 0);
  417. }
  418. public boolean canOpenBackpack(World world, Player player) {
  419. boolean canOpenBackpack = false;
  420. if (permissionHandler != null) {
  421. if ((permissionHandler.has(world.getName(), player.getName(),
  422. "backpack.size54"))
  423. || (permissionHandler.has(world.getName(),
  424. player.getName(), "backpack.size45"))
  425. || (permissionHandler.has(world.getName(),
  426. player.getName(), "backpack.size36"))
  427. || (permissionHandler.has(world.getName(),
  428. player.getName(), "backpack.size27"))
  429. || (permissionHandler.has(world.getName(),
  430. player.getName(), "backpack.size18"))
  431. || (permissionHandler.has(world.getName(),
  432. player.getName(), "backpack.size9"))) {
  433. canOpenBackpack = true;
  434. } else {
  435. canOpenBackpack = false;
  436. }
  437. } else if (permissionsBukkitPlugin != null) {
  438. if ((player.hasPermission("backpack.size54"))
  439. || (player.hasPermission("backpack.size45"))
  440. || (player.hasPermission("backpack.size36"))
  441. || (player.hasPermission("backpack.size27"))
  442. || (player.hasPermission("backpack.size18"))
  443. || (player.hasPermission("backpack.size9"))) {
  444. canOpenBackpack = true;
  445. } else {
  446. canOpenBackpack = false;
  447. }
  448. } else if (permissionsEx != null) {
  449. if ((permissionsEx.has(player.getName(), "backpack.size54",
  450. world.getName()))
  451. || (permissionsEx.has(player.getName(), "backpack.size45",
  452. world.getName()))
  453. || (permissionsEx.has(player.getName(), "backpack.size36",
  454. world.getName()))
  455. || (permissionsEx.has(player.getName(), "backpack.size27",
  456. world.getName()))
  457. || (permissionsEx.has(player.getName(), "backpack.size18",
  458. world.getName()))
  459. || (permissionsEx.has(player.getName(), "backpack.size9",
  460. world.getName()))) {
  461. canOpenBackpack = true;
  462. } else {
  463. canOpenBackpack = false;
  464. }
  465. } else if (groupManager != null) {
  466. if ((groupManager.getWorldsHolder().getWorldPermissions(player)
  467. .has(player, "backpack.size54"))
  468. || (groupManager.getWorldsHolder().getWorldPermissions(
  469. player).has(player, "backpack.size45"))
  470. || (groupManager.getWorldsHolder().getWorldPermissions(
  471. player).has(player, "backpack.size36"))
  472. || (groupManager.getWorldsHolder().getWorldPermissions(
  473. player).has(player, "backpack.size27"))
  474. || (groupManager.getWorldsHolder().getWorldPermissions(
  475. player).has(player, "backpack.size18"))
  476. || (groupManager.getWorldsHolder().getWorldPermissions(
  477. player).has(player, "backpack.size9"))) {
  478. canOpenBackpack = true;
  479. } else {
  480. canOpenBackpack = false;
  481. }
  482. } else {
  483. canOpenBackpack = true;
  484. }
  485. if (getWorldGuard() != null) {
  486. Location location = player.getLocation();
  487. com.sk89q.worldedit.Vector vector = new com.sk89q.worldedit.Vector(
  488. location.getX(), location.getY(), location.getZ());
  489. Map<String, ProtectedRegion> regions = getWorldGuard()
  490. .getGlobalRegionManager().get(location.getWorld())
  491. .getRegions();
  492. List<String> inRegions = new ArrayList<String>();
  493. for (String key_ : regions.keySet()) {
  494. ProtectedRegion region = regions.get(key_);
  495. if (region.contains(vector)) {
  496. inRegions.add(key_);
  497. }
  498. }
  499. for (String region : noBackpackRegions) {
  500. if (inRegions.contains(region)) {
  501. canOpenBackpack = false;
  502. }
  503. }
  504. }
  505. if (mobArenaHandler != null) {
  506. if (mobArenaHandler.inRegion(player.getLocation())) {
  507. canOpenBackpack = false;
  508. }
  509. }
  510. if (jail != null) {
  511. if (jail.isPlayerJailed(player.getName()) == true) {
  512. canOpenBackpack = false;
  513. }
  514. }
  515. return canOpenBackpack;
  516. }
  517. @Override
  518. public boolean onCommand(CommandSender sender, Command cmd,
  519. String commandLabel, String[] args) {
  520. if (sender instanceof Player) {
  521. Player player = (Player) sender;
  522. if (commandLabel.equalsIgnoreCase("backpack")
  523. || commandLabel.equalsIgnoreCase("bp")) {
  524. if (canOpenBackpack(player.getWorld(), player) == true) {
  525. if (args.length == 0) {
  526. showHelp(player);
  527. } else if (args.length == 1) {
  528. String argument = args[0];
  529. if (argument.equalsIgnoreCase("reload")) {
  530. if (userHasPermission(player, "backpack.reload")) {
  531. loadOrReloadConfiguration();
  532. player.sendMessage(li
  533. .getMessage("configreloaded1"));
  534. player.sendMessage(li
  535. .getMessage("configreloaded2"));
  536. player.sendMessage(li
  537. .getMessage("configreloaded3"));
  538. }
  539. } else if (argument.equalsIgnoreCase("help")
  540. || argument.equalsIgnoreCase("?")) {
  541. showHelp(player);
  542. } else if (argument.equalsIgnoreCase("info")) {
  543. int size = allowedSize(player.getWorld(), player,
  544. true);
  545. if (size == 54) {
  546. player.sendMessage(li
  547. .getMessage("youvegotthebiggest")
  548. + ChatColor.RED
  549. + inventoryName
  550. + ChatColor.WHITE + li.getMessage("!"));
  551. } else {
  552. player.sendMessage(li.getMessage("your")
  553. + ChatColor.RED + inventoryName
  554. + ChatColor.WHITE
  555. + li.getMessage("has") + ChatColor.RED
  556. + size + ChatColor.WHITE
  557. + li.getMessage("slots"));
  558. if (size < upgradeAllowedSize(
  559. player.getWorld(), player)
  560. && Method != null
  561. && (permissionHandler != null || permissionsBukkitPlugin != null)
  562. || permissionsEx != null
  563. || groupManager != null) {
  564. double cost = calculateCost(size);
  565. player.sendMessage(li
  566. .getMessage("nextupgradecost")
  567. + ChatColor.RED
  568. + Method.format(cost)
  569. + ChatColor.WHITE + ".");
  570. }
  571. }
  572. } else if (argument.equalsIgnoreCase("upgrade")) {
  573. if (allowedSize(player.getWorld(), player, true) < upgradeAllowedSize(
  574. player.getWorld(), player)) {
  575. if (Method != null
  576. && (permissionHandler != null || permissionsBukkitPlugin != null)
  577. || permissionsEx != null
  578. || groupManager != null) {
  579. startUpgradeProcedure(
  580. allowedSize(player.getWorld(),
  581. player, true), player,
  582. player);
  583. }
  584. } else if (allowedSize(player.getWorld(), player,
  585. true) == 54) {
  586. player.sendMessage(li
  587. .getMessage("youvegotthebiggest")
  588. + ChatColor.RED
  589. + inventoryName
  590. + ChatColor.WHITE + li.getMessage("!"));
  591. } else {
  592. player.sendMessage(li
  593. .getMessage("youvegotthebiggest")
  594. + ChatColor.RED
  595. + inventoryName
  596. + ChatColor.WHITE
  597. + li.getMessage("foryourpermissions"));
  598. }
  599. } else if (argument.equalsIgnoreCase("clear")) {
  600. if (userHasPermission(player, "backpack.clear")) {
  601. if (inventories.containsKey(player.getName())) {
  602. inventories.remove(player.getName());
  603. player.sendMessage(li.getMessage("your")
  604. + ChatColor.RED + inventoryName
  605. + ChatColor.WHITE
  606. + li.getMessage("hasbeencleared"));
  607. } else {
  608. player.sendMessage(li
  609. .getMessage("youdonthavearegistred")
  610. + ChatColor.RED
  611. + inventoryName
  612. + ChatColor.WHITE
  613. + li.getMessage("!"));
  614. }
  615. }
  616. } else if (argument.equalsIgnoreCase("debug")) {
  617. if (permissionHandler != null) {
  618. logger.info(li.getMessage("usingpermissions"));
  619. } else if (permissionsBukkitPlugin != null) {
  620. logger.info(li
  621. .getMessage("usingpermissionsbukkit"));
  622. } else if (permissionsEx != null) {
  623. logger.info(li.getMessage("usingpermissionsex"));
  624. } else if (groupManager != null) {
  625. logger.info(li.getMessage("usinggroupmanager"));
  626. }
  627. if (Method != null) {
  628. logger.info(li.getMessage("usingeconomy"));
  629. }
  630. logger.info(li
  631. .getMessage("yourpermissionsgiveyoua")
  632. + allowedSize(player.getWorld(), player,
  633. false)
  634. + li.getMessage("slotsbis")
  635. + inventoryName + ".");
  636. logger.info(li
  637. .getMessage("yourpersonalfilegivesyoua")
  638. + allowedSizeInConfig(player.getWorld(),
  639. player)
  640. + li.getMessage("slotsbis")
  641. + inventoryName + ".");
  642. logger.info(li
  643. .getMessage("yourpermissionsallowyoutoupgradetoa")
  644. + upgradeAllowedSize(player.getWorld(),
  645. player)
  646. + li.getMessage("slotsbis")
  647. + inventoryName + ".");
  648. } else {
  649. showHelp(player);
  650. }
  651. } else if (args.length == 2) {
  652. String firstArgument = args[0];
  653. String playerName = args[1];
  654. if (firstArgument.equalsIgnoreCase("info")) {
  655. if (userHasPermission(player, "backpack.info.other")) {
  656. if (inventories.containsKey(playerName)) {
  657. Player playerCmd = getServer().getPlayer(
  658. playerName);
  659. int size = allowedSize(
  660. playerCmd.getWorld(), playerCmd,
  661. true);
  662. if (size == 54) {
  663. player.sendMessage(li
  664. .getMessage("playerhasgotthebiggest")
  665. + ChatColor.RED
  666. + inventoryName
  667. + ChatColor.WHITE
  668. + li.getMessage("!"));
  669. } else {
  670. player.sendMessage(li
  671. .getMessage("players")
  672. + ChatColor.RED
  673. + inventoryName
  674. + ChatColor.WHITE
  675. + li.getMessage("hasbis")
  676. + size
  677. + li.getMessage("slots"));
  678. if (size < upgradeAllowedSize(
  679. player.getWorld(), player)
  680. && Method != null
  681. && (permissionHandler != null || permissionsBukkitPlugin != null)
  682. || permissionsEx != null
  683. || groupManager != null) {
  684. double cost = calculateCost(size);
  685. player.sendMessage(li
  686. .getMessage("nextupgradecost")
  687. + ChatColor.RED
  688. + Method.format(cost)
  689. + ChatColor.WHITE + ".");
  690. }
  691. }
  692. } else {
  693. player.sendMessage(ChatColor.RED
  694. + li.getMessage("playernotfound"));
  695. }
  696. }
  697. } else if (firstArgument.equalsIgnoreCase("upgrade")) {
  698. if (userHasPermission(player,
  699. "backpack.upgrade.other")) {
  700. if (inventories.containsKey(playerName)) {
  701. Player playerCmd = getServer().getPlayer(
  702. playerName);
  703. if (allowedSize(playerCmd.getWorld(),
  704. playerCmd, true) < upgradeAllowedSize(
  705. playerCmd.getWorld(), playerCmd)) {
  706. if (Method != null
  707. && (permissionHandler != null || permissionsBukkitPlugin != null)
  708. || permissionsEx != null
  709. || groupManager != null) {
  710. startUpgradeProcedure(
  711. allowedSize(
  712. playerCmd
  713. .getWorld(),
  714. playerCmd, true),
  715. playerCmd, player);
  716. }
  717. } else if (allowedSize(
  718. playerCmd.getWorld(), playerCmd,
  719. true) == 54) {
  720. player.sendMessage(li
  721. .getMessage("playerhasgotthebiggest")
  722. + ChatColor.RED
  723. + inventoryName
  724. + ChatColor.WHITE
  725. + li.getMessage("!"));
  726. } else {
  727. player.sendMessage(li
  728. .getMessage("playerhasgotthebiggest")
  729. + ChatColor.RED
  730. + inventoryName
  731. + ChatColor.WHITE
  732. + li.getMessage("forhispermissions"));
  733. }
  734. } else {
  735. player.sendMessage(ChatColor.RED
  736. + li.getMessage("playernotfound"));
  737. }
  738. }
  739. } else if (firstArgument.equalsIgnoreCase("clear")) {
  740. if (userHasPermission(player,
  741. "backpack.clear.other")) {
  742. if (inventories.containsKey(playerName)) {
  743. inventories.remove(playerName);
  744. player.sendMessage(li.getMessage("frenchonly")
  745. + playerName
  746. + li.getMessage("'s")
  747. + ChatColor.RED + inventoryName
  748. + ChatColor.WHITE
  749. + li.getMessage("hasbeencleared"));
  750. } else {
  751. player.sendMessage(ChatColor.RED
  752. + li.getMessage("playernotfound"));
  753. }
  754. }
  755. } else if (firstArgument.equalsIgnoreCase("open")) {
  756. if (userHasPermission(player, "backpack.open.other")) {
  757. if (inventories.containsKey(playerName)) {
  758. if (!openedInventories
  759. .containsKey(playerName)) {
  760. CustomInventory inv = new CustomInventory(
  761. allowedSize(player.getWorld(), player, true),
  762. inventoryName);
  763. openedInventories.put(playerName, inv);
  764. openedInventoriesOthers.put(
  765. player.getName(), playerName);
  766. inv.setContents(inventories
  767. .get(playerName));
  768. ((org.getspout.spoutapi.player.SpoutPlayer) player)
  769. .openInventoryWindow((Inventory) inv);
  770. } else {
  771. player.sendMessage(li
  772. .getMessage("playerhasalreadyhis")
  773. + ChatColor.RED
  774. + inventoryName
  775. + ChatColor.WHITE
  776. + li.getMessage("opened"));
  777. }
  778. } else {
  779. player.sendMessage(ChatColor.RED
  780. + li.getMessage("playernotfound"));
  781. }
  782. }
  783. }
  784. }
  785. } else {
  786. showHelp(player);
  787. }
  788. }
  789. }
  790. return false;
  791. }
  792. private void startUpgradeProcedure(int sizeBefore, Player player,
  793. Player notificationsAndMoneyPlayer) {
  794. int sizeAfter = sizeBefore + 9;
  795. double cost = calculateCost(sizeBefore);
  796. if (Method.hasAccount(notificationsAndMoneyPlayer.getName())) {
  797. MethodAccount account = Method
  798. .getAccount(notificationsAndMoneyPlayer.getName());
  799. if (account != null) {
  800. if (account.hasEnough(cost)) {
  801. account.subtract(cost);
  802. } else {
  803. if (player.equals(notificationsAndMoneyPlayer)) {
  804. notificationsAndMoneyPlayer.sendMessage(li
  805. .getMessage("notenoughmoneyyour")
  806. + ChatColor.RED
  807. + inventoryName
  808. + ChatColor.WHITE + ".");
  809. } else {
  810. notificationsAndMoneyPlayer.sendMessage(li
  811. .getMessage("notenoughmoneyplayer")
  812. + ChatColor.RED
  813. + inventoryName
  814. + ChatColor.WHITE + ".");
  815. }
  816. return;
  817. }
  818. } else {
  819. notificationsAndMoneyPlayer.sendMessage(ChatColor.RED
  820. + li.getMessage("noaccount"));
  821. return;
  822. }
  823. }
  824. SBInventorySaveTask.saveInventory(player, player.getWorld());
  825. inventories.remove(player.getName());
  826. File saveFile;
  827. if (config.getBoolean("Backpack." + player.getWorld().getName()
  828. + ".InventoriesShare?", true)) {
  829. saveFile = new File(this.getDataFolder() + File.separator
  830. + "inventories", player.getName() + ".yml");
  831. } else {
  832. saveFile = new File(this.getDataFolder() + File.separator
  833. + "inventories", player.getName() + "_"
  834. + player.getWorld().getName() + ".yml");
  835. }
  836. Configuration config = new Configuration(saveFile);
  837. config.load();
  838. config.setProperty("Size", sizeAfter);
  839. config.save();
  840. loadInventory(player, player.getWorld());
  841. notificationsAndMoneyPlayer.sendMessage(li.getMessage("your")
  842. + ChatColor.RED + inventoryName + ChatColor.WHITE
  843. + li.getMessage("hasbeenupgraded"));
  844. notificationsAndMoneyPlayer.sendMessage(li.getMessage("ithasnow")
  845. + ChatColor.RED + sizeAfter + ChatColor.WHITE
  846. + li.getMessage("slots"));
  847. }
  848. public boolean userHasPermission(Player player, String permission) {
  849. if (permissionHandler != null) {
  850. return permissionHandler.has(player.getWorld().getName(),
  851. player.getName(), permission);
  852. } else if (permissionsBukkitPlugin != null) {
  853. return player.hasPermission(permission);
  854. } else if (permissionsEx != null) {
  855. return permissionsEx.has(player, permission);
  856. } else if (groupManager != null) {
  857. return groupManager.getWorldsHolder().getWorldPermissions(player)
  858. .has(player, permission);
  859. } else {
  860. return player.isOp();
  861. }
  862. }
  863. public void showHelp(Player player) {
  864. if (userHasPermission(player, "backpack.reload")) {
  865. player.sendMessage(li.getMessage("reloadcommand"));
  866. }
  867. player.sendMessage(li.getMessage("infocommand") + ChatColor.RED
  868. + inventoryName + ChatColor.WHITE + ".");
  869. if (allowedSize(player.getWorld(), player, true) < upgradeAllowedSize(
  870. player.getWorld(), player)
  871. && Method != null
  872. && (permissionHandler != null || permissionsBukkitPlugin != null)
  873. || permissionsEx != null || groupManager != null) {
  874. player.sendMessage(li.getMessage("upgradecommand") + ChatColor.RED
  875. + inventoryName + ChatColor.WHITE + ".");
  876. }
  877. }
  878. public double calculateCost(int size) {
  879. double cost = price54;
  880. if (size == 9) {
  881. cost = price18;
  882. } else if (size == 18) {
  883. cost = price27;
  884. } else if (size == 27) {
  885. cost = price36;
  886. } else if (size == 36) {
  887. cost = price45;
  888. } else if (size == 45) {
  889. cost = price54;
  890. }
  891. return cost;
  892. }
  893. private int upgradeAllowedSize(World world, Player player) {
  894. int size = 9;
  895. if (userHasPermission(player, "backpack.upgrade54")) {
  896. size = 54;
  897. } else if (userHasPermission(player, "backpack.upgrade45")) {
  898. size = 45;
  899. } else if (userHasPermission(player, "backpack.upgrade36")) {
  900. size = 36;
  901. } else if (userHasPermission(player, "backpack.upgrade27")) {
  902. size = 27;
  903. } else if (userHasPermission(player, "backpack.upgrade18")) {
  904. size = 18;
  905. }
  906. return size;
  907. }
  908. public boolean isOpenBackpack(Player player) {
  909. return openedInventories.containsKey(player.getName());
  910. }
  911. public Inventory getOpenedBackpack(Player player) {
  912. return openedInventories.get(player.getName());
  913. }
  914. public Inventory getClosedBackpack(Player player) {
  915. CustomInventory inventory = new CustomInventory(
  916. allowedSize(player.getWorld(), player, true), inventoryName);
  917. if (inventories.containsKey(player.getName())) {
  918. inventory.setContents(inventories.get(player.getName()));
  919. }
  920. return inventory;
  921. }
  922. public void setClosedBackpack(Player player, Inventory inventory) {
  923. inventories.put(player.getName(), inventory.getContents());
  924. return;
  925. }
  926. @Override
  927. public void onDisable() {
  928. this.getServer().getScheduler().cancelTask(saveTaskId);
  929. logger.info(logTag + li.getMessage("savingallinventories"));
  930. SBInventorySaveTask.saveAll();
  931. logger.info(logTag + li.getMessage("isnowdisabled"));
  932. }
  933. }