mcMMO.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package com.gmail.nossr50;
  2. import com.gmail.nossr50.datatypes.PlayerProfile;
  3. import com.nijikokun.bukkit.Permissions.Permissions;
  4. import com.nijiko.Messaging;
  5. import com.nijiko.permissions.PermissionHandler;
  6. import org.bukkit.plugin.Plugin;
  7. import java.io.BufferedReader;
  8. import java.io.File;
  9. import java.io.FileReader;
  10. import java.io.FileWriter;
  11. import java.io.IOException;
  12. import java.sql.PreparedStatement;
  13. import java.sql.DatabaseMetaData;
  14. import java.sql.SQLException;
  15. import java.sql.Connection;
  16. import java.sql.Statement;
  17. import java.sql.ResultSet;
  18. import java.util.ArrayList;
  19. import java.util.HashMap;
  20. import java.util.Timer;
  21. import java.util.logging.Level;
  22. import java.util.logging.Logger;
  23. import org.bukkit.event.Event.Priority;
  24. import org.bukkit.event.Event;
  25. import org.bukkit.plugin.PluginDescriptionFile;
  26. import org.bukkit.plugin.java.JavaPlugin;
  27. import org.bukkit.plugin.PluginManager;
  28. import org.bukkit.entity.Player;
  29. public class mcMMO extends JavaPlugin {
  30. static String maindirectory = "plugins/mcMMO/";
  31. static File Properties = new File(maindirectory + "mcmmo.properties");
  32. public static final Logger log = Logger.getLogger("Minecraft");
  33. private final mcPlayerListener playerListener = new mcPlayerListener(this);
  34. private final mcBlockListener blockListener = new mcBlockListener(this);
  35. private final mcEntityListener entityListener = new mcEntityListener(this);
  36. private final String name = "mcMMO";
  37. public static PermissionHandler PermissionsHandler = null;
  38. private Permissions permissions;
  39. private Timer mcMMO_Timer = new Timer(true);
  40. public static Database database = null;
  41. public void onEnable() {
  42. mcMMO_Timer.schedule(new mcTimer(this), 0, (long)(1000));
  43. new File(maindirectory).mkdir();
  44. if(!Properties.exists()){
  45. try {
  46. Properties.createNewFile();
  47. FileWriter writer = null;
  48. try {
  49. writer = new FileWriter(Properties);
  50. } catch (Exception e) {
  51. log.log(Level.SEVERE, "Exception while creating " + Properties, e);
  52. } finally {
  53. try {
  54. if (writer != null) {
  55. writer.close();
  56. }
  57. } catch (IOException e) {
  58. log.log(Level.SEVERE, "Exception while closing writer for " + Properties, e);
  59. }
  60. }
  61. } catch (IOException e) {
  62. e.printStackTrace();
  63. }
  64. }
  65. //Load the file
  66. mcLoadProperties.loadMain();
  67. mcUsers.getInstance().loadUsers();
  68. for(Player player : getServer().getOnlinePlayers()){
  69. mcUsers.addUser(player);
  70. }
  71. PluginManager pm = getServer().getPluginManager();
  72. pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this);
  73. pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Priority.Normal, this);
  74. pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Highest, this);
  75. pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Lowest, this);
  76. pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Normal, this);
  77. pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Normal, this);
  78. pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Normal, this);
  79. pm.registerEvent(Event.Type.BLOCK_FROMTO, blockListener, Priority.Normal, this);
  80. pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Normal, this);
  81. pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Priority.Monitor, this);
  82. pm.registerEvent(Event.Type.PLAYER_RESPAWN, playerListener, Priority.Normal, this);
  83. pm.registerEvent(Event.Type.PLAYER_ITEM_HELD, playerListener, Priority.Normal, this);
  84. pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Highest, this);
  85. pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Normal, this);
  86. PluginDescriptionFile pdfFile = this.getDescription();
  87. mcPermissions.initialize(getServer());
  88. mcLoadMySQL();
  89. //mcLeaderboard.makeLeaderboards(); //Make the leaderboards
  90. System.out.println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
  91. }
  92. private void mcLoadMySQL() {
  93. if (mcLoadProperties.useMySQL) {
  94. // create database object
  95. database = new Database();
  96. }
  97. }
  98. public void setupPermissions() {
  99. Plugin test = this.getServer().getPluginManager().getPlugin("Permissions");
  100. if(this.PermissionsHandler == null) {
  101. if(test != null) {
  102. this.PermissionsHandler = ((Permissions)test).getHandler();
  103. } else {
  104. log.info(Messaging.bracketize(name) + " Permission system not enabled. Disabling plugin.");
  105. this.getServer().getPluginManager().disablePlugin(this);
  106. }
  107. }
  108. }
  109. public boolean isPartyChatToggled(Player player){
  110. if(mcConfig.getInstance().isPartyToggled(player.getName())){
  111. return true;
  112. } else {
  113. return false;
  114. }
  115. }
  116. public boolean inSameParty(Player playera, Player playerb){
  117. if(mcUsers.getProfile(playera).inParty() && mcUsers.getProfile(playerb).inParty()){
  118. if(mcUsers.getProfile(playera).getParty().equals(mcUsers.getProfile(playerb).getParty())){
  119. return true;
  120. } else {
  121. return false;
  122. }
  123. } else {
  124. return false;
  125. }
  126. }
  127. public void addXp(Player player, String skillname, Integer newvalue){
  128. PlayerProfile PP = mcUsers.getProfile(player);
  129. PP.addXpToSkill(newvalue, skillname);
  130. mcSkills.XpCheck(player);
  131. }
  132. public void modifySkill(Player player, String skillname, Integer newvalue){
  133. PlayerProfile PP = mcUsers.getProfile(player);
  134. PP.modifyskill(newvalue, skillname);
  135. }
  136. public ArrayList<String> getParties(){
  137. String location = "plugins/mcMMO/mcmmo.users";
  138. ArrayList<String> parties = new ArrayList<String>();
  139. try {
  140. //Open the users file
  141. FileReader file = new FileReader(location);
  142. BufferedReader in = new BufferedReader(file);
  143. String line = "";
  144. while((line = in.readLine()) != null)
  145. {
  146. String[] character = line.split(":");
  147. String theparty = null;
  148. //Party
  149. if(character.length > 3)
  150. theparty = character[3];
  151. if(!parties.contains(theparty))
  152. parties.add(theparty);
  153. }
  154. in.close();
  155. } catch (Exception e) {
  156. log.log(Level.SEVERE, "Exception while reading "
  157. + location + " (Are you sure you formatted it correctly?)", e);
  158. }
  159. return parties;
  160. }
  161. public static String getPartyName(Player player){
  162. PlayerProfile PP = mcUsers.getProfile(player);
  163. return PP.getParty();
  164. }
  165. public static boolean inParty(Player player){
  166. PlayerProfile PP = mcUsers.getProfile(player);
  167. return PP.inParty();
  168. }
  169. public boolean isAdminChatToggled(Player player){
  170. if(mcConfig.getInstance().isAdminToggled(player.getName())){
  171. return true;
  172. } else {
  173. return false;
  174. }
  175. }
  176. public Permissions getPermissions() {
  177. return permissions;
  178. }
  179. public void onDisable() {
  180. System.out.println("mcMMO was disabled.");
  181. }
  182. }