PageRenderTime 64ms CodeModel.GetById 34ms RepoModel.GetById 0ms app.codeStats 0ms

/Regios/src/couk/Adamki11s/Regios/Data/LoaderCore.java

https://github.com/Yuri4171/TameGrass
Java | 374 lines | 273 code | 99 blank | 2 comment | 31 complexity | 3363935ab61477ebc563610508505eac MD5 | raw file
  1. package couk.Adamki11s.Regios.Data;
  2. import java.io.File;
  3. import java.util.ArrayList;
  4. import java.util.logging.Logger;
  5. import org.bukkit.Bukkit;
  6. import org.bukkit.Location;
  7. import org.bukkit.Material;
  8. import org.bukkit.World;
  9. import org.bukkit.util.config.Configuration;
  10. import couk.Adamki11s.Regios.Checks.ChunkGrid;
  11. import couk.Adamki11s.Regios.CustomEvents.RegionDeleteEvent;
  12. import couk.Adamki11s.Regios.CustomEvents.RegionLoadEvent;
  13. import couk.Adamki11s.Regios.Economy.Economy;
  14. import couk.Adamki11s.Regios.Economy.EconomyCore;
  15. import couk.Adamki11s.Regios.Regions.GlobalRegionManager;
  16. import couk.Adamki11s.Regios.Regions.GlobalWorldSetting;
  17. import couk.Adamki11s.Regios.Regions.Region;
  18. import couk.Adamki11s.Regios.Scheduler.LightningRunner;
  19. public class LoaderCore {
  20. private final File root = new File("plugins" + File.separator + "Regios"), db_root = new File(root + File.separator + "Database"), config_root = new File(root
  21. + File.separator + "Configuration");
  22. File updateconfig = new File(config_root + File.separator + "Updates.config"), defaultregions = new File(config_root + File.separator + "DefaultRegion.config"),
  23. generalconfig = new File(config_root + File.separator + "GeneralSettings.config");
  24. private final Logger log = Logger.getLogger("Minecraft.Regios");
  25. private final String prefix = "[Regios]";
  26. public void setup() {
  27. loadConfiguration();
  28. loadRegions(false);
  29. }
  30. public void silentReload() {
  31. GlobalRegionManager.purgeRegions();
  32. loadConfiguration();
  33. loadRegions(true);
  34. }
  35. public void loadConfiguration() {
  36. log.info(prefix + " Loading configuration files.");
  37. Configuration c = new Configuration(defaultregions);
  38. c.load();
  39. String a = c.getString("DefaultSettings.Messages.WelcomeMessage"), b = c.getString("DefaultSettings.Messages.LeaveMessage"), cc = c
  40. .getString("DefaultSettings.Messages.ProtectionMessage"), d = c.getString("DefaultSettings.Messages.PreventEntryMessage"), e = c
  41. .getString("DefaultSettings.Messages.PreventExitMessage"), pass = c.getString("DefaultSettings.Password.Password");
  42. boolean aa = c.getBoolean("DefaultSettings.Messages.ShowWelcomeMessage", true), bb = c.getBoolean("DefaultSettings.Messages.ShowLeaveMessage", true), ccc = c
  43. .getBoolean("DefaultSettings.Messages.ShowProtectionMessage", true), dd = c.getBoolean("DefaultSettings.Messages.ShowPreventEntryMessage", true), ee = c
  44. .getBoolean("DefaultSettings.Messages.ShowPreventExitMessage", true);
  45. boolean f = c.getBoolean("DefaultSettings.General.Protected", false), g = c.getBoolean("DefaultSettings.General.PreventEntry", false), exit = c.getBoolean(
  46. "DefaultSettings.General.PreventExit", false), h = c.getBoolean("DefaultSettings.General.MobSpawns", true), i = c.getBoolean(
  47. "DefaultSettings.General.MonsterSpawns", true), j = c.getBoolean("DefaultSettings.Other.HealthEnabled", true), k = c.getBoolean("DefaultSettings.General.PvP",
  48. false), m = c.getBoolean("DefaultSettings.General.DoorsLocked", false), n = c.getBoolean("DefaultSettings.General.ChestsLocked", false), o = c.getBoolean(
  49. "DefaultSettings.General.PreventInteraction", false), v = c.getBoolean("DefaultSettings.Messages.ShowPvPWarning", true), pe = c.getBoolean(
  50. "DefaultSettings.Password.PasswordProtection", false), fireProtection = c.getBoolean("DefaultSettings.Protection.FireProtection", false);
  51. int p = c.getInt("DefaultSettings.Other.LSPS", 0), q = c.getInt("DefaultSettings.Other.HealthRegen", 0), r = c.getInt("DefaultSettings.Other.VelocityWarp", 0);
  52. String dam = c.getString("DefaultSettings.Password.PasswordMessage", "Authentication required! Do /regios auth <password>"), dasm = c.getString(
  53. "DefaultSettings.Password.PasswordSuccessMessage", "Authentication successful!");
  54. MODE s = MODE.toMode(c.getString("DefaultSettings.Modes.ProtectionMode")), t = MODE.toMode(c.getString("DefaultSettings.Modes.PreventEntryMode")), u = MODE.toMode(c
  55. .getString("DefaultSettings.Modes.PreventExitMode")), item = MODE.toMode(c.getString("DefaultSettings.Modes.ItemControlMode"));
  56. Material welcomeIcon = Material.getMaterial(c.getInt("DefaultSettings.Spout.SpoutWelcomeIconID", Material.GRASS.getId())), leaveIcon = Material.getMaterial(c.getInt(
  57. "DefaultSettings.Spout.SpoutLeaveIconID", Material.DIRT.getId()));
  58. String[] musicUrl = c.getString("DefaultSettings.Spout.Sound.CustomMusicURL", "").trim().split(",");
  59. boolean playmusic = c.getBoolean("DefaultSettings.Spout.Sound.PlayCustomMusic", false);
  60. boolean permWipeOnEnter = c.getBoolean("DefaultSettings.Inventory.PermWipeOnEnter", false), permWipeOnExit = c.getBoolean("DefaultSettings.Inventory.PermWipeOnExit",
  61. false), wipeAndCacheOnEnter = c.getBoolean("DefaultSettings.Inventory.WipeAndCacheOnEnter", false), wipeAndCacheOnExit = c.getBoolean(
  62. "DefaultSettings.Inventory.WipeAndCacheOnExit", false), forceCommand = c.getBoolean("DefaultSettings.Command.ForceCommand", false);
  63. String[] commandSet = c.getString("DefaultSettings.Command.CommandSet", "").trim().split(",");
  64. String[] tempAddCache = c.getString("Region.Permissions.TemporaryCache.AddNodes", "").trim().split(",");
  65. String[] permAddCache = c.getString("Region.Permissions.PermanentCache.AddNodes", "").trim().split(",");
  66. String[] permRemCache = c.getString("Region.Permissions.PermanentCache.RemoveNodes", "").trim().split(",");
  67. boolean form = c.getBoolean("DefaultSettings.Block.BlockForm.Enabled", true);
  68. // ___________________________________
  69. c = new Configuration(updateconfig);
  70. c.load();
  71. boolean cfu = c.getBoolean("CheckForUpdates", true), dua = c.getBoolean("DownloadUpdatesAutomatically", true), cov = c.getBoolean("CacheOldVersions", true), fr = c
  72. .getBoolean("ForceReload", true);
  73. int playerCap = c.getInt("DefaultSettings.General.PlayerCap.Cap", 0);
  74. new ConfigurationData(a, b, cc, d, e, pass, f, g, h, i, j, k, m, n, o, v, pe, p, q, r, s, t, u, item, cfu, dua, cov, fr, exit, dam, dasm, welcomeIcon, leaveIcon, aa,
  75. bb, ccc, dd, ee, fireProtection, musicUrl, playmusic, permWipeOnEnter, permWipeOnExit, wipeAndCacheOnEnter, wipeAndCacheOnExit, forceCommand, commandSet,
  76. tempAddCache, permAddCache, permRemCache, form, playerCap);
  77. System.out.println("[Regios] Loaded default region configuation file.");
  78. // Initialises variables in configuration data.
  79. c = new Configuration(generalconfig);
  80. c.load();
  81. int id = c.getInt("Region.Tools.Setting.ID", Material.WOOD_AXE.getId());
  82. ConfigurationData.defaultSelectionTool = Material.getMaterial(id);
  83. Economy econ = Economy.toEconomy(c.getString("Regios.Economy", "NONE"));
  84. if (econ == Economy.NONE) {
  85. EconomyCore.economySupport = false;
  86. EconomyCore.economy = econ;
  87. log.info(prefix + " No economy preset specified in config.");
  88. } else if (econ == Economy.BOSECONOMY || econ == Economy.ICONOMY) {
  89. EconomyCore.economySupport = true;
  90. EconomyCore.economy = econ;
  91. log.info(prefix + " Economy preset found : " + econ.toString().toUpperCase());
  92. }
  93. GlobalWorldSetting.writeWorldsToConfiguration();
  94. GlobalWorldSetting.loadWorldsFromConfiguration();
  95. log.info(prefix + " Configuration files loaded successfully!");
  96. }
  97. public void loadRegions(boolean silent) {
  98. File[] children = db_root.listFiles();
  99. if (children.length > 0) {
  100. if (!silent) {
  101. log.info(prefix + " Loading [" + children.length + "] Regions.");
  102. }
  103. } else {
  104. if (!silent) {
  105. log.info(prefix + " No Regions to load.");
  106. }
  107. }
  108. for (File root : children) {
  109. if (root.isDirectory()) {
  110. ArrayList<String> exceptionsPlayers = new ArrayList<String>();
  111. ArrayList<String> exceptionsNodes = new ArrayList<String>();
  112. ArrayList<Integer> items = new ArrayList<Integer>();
  113. File toload = new File(db_root + File.separator + root.getName() + File.separator + root.getName() + ".rz");
  114. File excep = new File(db_root + File.separator + root.getName() + File.separator + "Exceptions" + File.separator + "Players"), nodes = new File(db_root
  115. + File.separator + root.getName() + File.separator + "Exceptions" + File.separator + "Nodes"), it = new File(db_root + File.separator + root.getName()
  116. + File.separator + "Items");
  117. if (excep.exists()) {
  118. for (File ex : excep.listFiles()) {
  119. if (!ex.getName().contains("Placeholder")) {
  120. exceptionsPlayers.add(ex.getName().substring(0, ex.getName().lastIndexOf(".")));
  121. }
  122. }
  123. }
  124. if (nodes.exists()) {
  125. for (File nd : nodes.listFiles()) {
  126. if (!nd.getName().contains("Placeholder")) {
  127. exceptionsNodes.add(nd.getName().substring(0, nd.getName().lastIndexOf(".")));
  128. }
  129. }
  130. }
  131. if (it.exists()) {
  132. if (it.listFiles().length > 0) {
  133. for (File f : it.listFiles()) {
  134. if (!f.getName().contains("Placeholder")) {
  135. try {
  136. items.add(Integer.parseInt(f.getName().substring(0, f.getName().lastIndexOf("."))));
  137. } catch (NumberFormatException nfe) {
  138. log.severe(prefix + " Error parsing integer in item file! File : " + f.getName());
  139. }
  140. }
  141. }
  142. }
  143. }
  144. Configuration c = new Configuration(toload);
  145. c.load();
  146. String welcomeMessage = c.getString("Region.Messages.WelcomeMessage"), leaveMessage = c.getString("Region.Messages.LeaveMessage"), protectionMessage = c
  147. .getString("Region.Messages.ProtectionMessage"), preventEntryMessage = c.getString("Region.Messages.PreventEntryMessage"), preventExitMessage = c
  148. .getString("Region.Messages.PreventExitMessage");
  149. boolean showPvpWarning = c.getBoolean("Region.Messages.ShowPvpWarning", true), showWelcomeMessage = c.getBoolean("Region.Messages.ShowWelcomeMessage", true), showLeaveMessage = c
  150. .getBoolean("Region.Messages.ShowLeaveMessage", true), showProtectionMessage = c.getBoolean("Region.Messages.ShowProtectionMessage", true), showPreventEntryMessage = c
  151. .getBoolean("Region.Messages.ShowPreventEntryMessage", true), showPreventExitMessage = c.getBoolean("Region.Messages.ShowPreventExitMessage", true);
  152. MODE itemMode = MODE.toMode(c.getString("Region.Modes.ItemControlMode", "Whitelist")), protectionMode = MODE.toMode(c.getString("Region.Modes.ProtectionMode",
  153. "Whitelist")), preventEntryMode = MODE.toMode(c.getString("Region.Modes.PreventEntryMode", "Whitelist")), preventExitMode = MODE.toMode(c.getString(
  154. "Region.Modes.PreventExitMode", "Whitelist"));
  155. boolean _protected = c.getBoolean("Region.General.Protected", false), preventEntry = c.getBoolean("Region.General.PreventEntry", false), preventExit = c
  156. .getBoolean("Region.General.PreventExit", false), preventInteraction = c.getBoolean("Region.General.PreventInteraction", false), doorsLocked = c
  157. .getBoolean("Region.General.DoorsLocked", false), chestsLocked = c.getBoolean("Region.General.ChestsLocked", false), passwordEnabled = c.getBoolean(
  158. "Region.General.Password.Enabled", false), fireProtection = c.getBoolean("DefaultSettings.Protection.FireProtection", false);
  159. String password = c.getString("Region.General.Password.Password");
  160. boolean mobSpawns = c.getBoolean("Region.Other.MobSpawns", true), monsterSpawns = c.getBoolean("Region.Other.MonsterSpawns", true), pvp = c.getBoolean(
  161. "Region.Other.PvP", true), healthEnabled = c.getBoolean("Region.Other.HealthEnabled", true);
  162. int healthRegen = c.getInt("Region.Other.HealthRegen", 0), lsps = c.getInt("Region.Other.LSPS", 0);
  163. double velocityWarp = c.getDouble("Region.Other.VelocityWarp", 0);
  164. String owner = c.getString("Region.Essentials.Owner"), name = c.getString("Region.Essentials.Name");
  165. String ww = c.getString("Region.Essentials.World", "world");
  166. World world = Bukkit.getServer().getWorld(ww);
  167. String l11 = c.getString("Region.Essentials.Points.Point1"), l22 = c.getString("Region.Essentials.Points.Point2");
  168. Location l1 = toLocation(l11), l2 = toLocation(l22);
  169. String spoutWelcomeMessage = c.getString("Region.Spout.Welcome.Message"), spoutLeaveMessage = c.getString("Region.Spout.Leave.Message");
  170. Material spoutWelcomeMaterial = Material.getMaterial(c.getInt("Region.Spout.Welcome.IconID", Material.GRASS.getId())), spoutLeaveMaterial = Material
  171. .getMaterial(c.getInt("Region.Spout.Leave.IconID", Material.DIRT.getId()));
  172. String[] musicUrl = c.getString("Region.Spout.Sound.CustomMusicURL", "").trim().split(",");
  173. boolean playmusic = c.getBoolean("Region.Spout.Sound.PlayCustomMusic", false);
  174. boolean permWipeOnEnter = c.getBoolean("Region.Inventory.PermWipeOnEnter", false), permWipeOnExit = c.getBoolean("Region.Inventory.PermWipeOnExit", false), wipeAndCacheOnEnter = c
  175. .getBoolean("Region.Inventory.WipeAndCacheOnEnter", false), wipeAndCacheOnExit = c.getBoolean("Region.Inventory.WipeAndCacheOnExit", false), forceCommand = c
  176. .getBoolean("Region.Command.ForceCommand", false);
  177. String[] commandSet = c.getString("Region.Command.CommandSet", "").trim().split(",");
  178. String[] tempAddCache = c.getString("Region.Permissions.TemporaryCache.AddNodes", "").trim().split(",");
  179. String[] permAddCache = c.getString("Region.Permissions.PermanentCache.AddNodes", "").trim().split(",");
  180. String[] permRemCache = c.getString("Region.Permissions.PermanentCache.RemoveNodes", "").trim().split(",");
  181. String[] subOwners = c.getString("Region.Essentials.SubOwners", "").trim().split(",");
  182. Location warp = toLocation(c.getString("Region.Teleportation.Warp.Location", ww + ",0,0,0"));
  183. int playerCap = c.getInt("Region.General.PlayerCap.Cap", 0);
  184. boolean form = c.getBoolean("Region.Block.BlockForm.Enabled", true);
  185. int price = c.getInt("Region.Economy.Price", 0);
  186. boolean forSale = c.getBoolean("Region.Economy.ForSale", false);
  187. String textureUrl = c.getString("Region.Spout.Texture.TexturePackURL", "");
  188. boolean useTexture = c.getBoolean("Region.Spout.Texture.UseTexture", false);
  189. c.setProperty("Region.Spout.Texture.UseTexture", false);
  190. c.setProperty("Region.Spout.Texture.TexturePackURL", "");
  191. Region r = new Region(owner, name, l1, l2, world, null, false);
  192. for (String s : exceptionsPlayers) {
  193. r.addException(s);
  194. }
  195. for (String s : exceptionsNodes) {
  196. r.addExceptionNode(s);
  197. }
  198. r.setUseSpoutTexturePack(useTexture);
  199. r.setSpoutTexturePack(textureUrl);
  200. r.setSpoutExitMaterial(spoutLeaveMaterial);
  201. r.setSpoutEntryMaterial(spoutWelcomeMaterial);
  202. r.setSpoutEntryMessage(spoutWelcomeMessage);
  203. r.setSpoutExitMessage(spoutLeaveMessage);
  204. r.setVelocityWarp(velocityWarp);
  205. r.setLSPS(lsps);
  206. r.setHealthRegen(healthRegen);
  207. r.setHealthEnabled(healthEnabled);
  208. r.setPvp(pvp);
  209. r.setMonsterSpawns(monsterSpawns);
  210. r.setMobSpawns(mobSpawns);
  211. r.setPassword(password);
  212. r.setPasswordEnabled(passwordEnabled);
  213. r.setChestsLocked(chestsLocked);
  214. r.setDoorsLocked(doorsLocked);
  215. r.setPreventInteraction(preventInteraction);
  216. r.setPreventExit(preventExit);
  217. r.setPreventEntry(preventEntry);
  218. r.set_protection(_protected);
  219. r.setPreventExitMode(preventExitMode);
  220. r.setPreventEntryMode(preventEntryMode);
  221. r.setProtectionMode(protectionMode);
  222. r.setItemMode(itemMode);
  223. r.setShowPreventExitMessage(showPreventExitMessage);
  224. r.setShowPreventEntryMessage(showPreventEntryMessage);
  225. r.setShowProtectionMessage(showProtectionMessage);
  226. r.setShowLeaveMessage(showLeaveMessage);
  227. r.setShowWelcomeMessage(showWelcomeMessage);
  228. r.setShowPvpWarning(showPvpWarning);
  229. r.setPreventExitMessage((preventExitMessage));
  230. r.setPreventEntryMessage((preventEntryMessage));
  231. r.setProtectionMessage((protectionMessage));
  232. r.setLeaveMessage((leaveMessage));
  233. r.setWelcomeMessage((welcomeMessage));
  234. r.setFireProtection(fireProtection);
  235. r.setPlayCustomSoundUrl(playmusic);
  236. r.setCustomSoundUrl(musicUrl);
  237. r.setPermWipeOnEnter(permWipeOnEnter);
  238. r.setPermWipeOnExit(permWipeOnExit);
  239. r.setWipeAndCacheOnEnter(wipeAndCacheOnEnter);
  240. r.setWipeAndCacheOnExit(wipeAndCacheOnExit);
  241. r.setForceCommand(forceCommand);
  242. r.setCommandSet(commandSet);
  243. r.setItems(items);
  244. r.setTemporaryNodesCacheAdd(tempAddCache);
  245. r.setPermanentNodesCacheAdd(permAddCache);
  246. r.setPermanentNodesCacheRemove(permRemCache);
  247. r.setSubOwners(subOwners);
  248. r.setWarp(warp);
  249. r.setBlockForm(form);
  250. r.setPlayerCap(playerCap);
  251. r.setSalePrice(price);
  252. r.setForSale(forSale);
  253. if (r.getLSPS() > 0 && !LightningRunner.doesStikesContain(r)) {
  254. LightningRunner.addRegion(r);
  255. } else if (r.getLSPS() == 0 && LightningRunner.doesStikesContain(r)) {
  256. LightningRunner.removeRegion(r);
  257. }
  258. RegionLoadEvent event = new RegionLoadEvent("RegionLoadEvent");
  259. event.setProperties(r);
  260. Bukkit.getServer().getPluginManager().callEvent(event);
  261. }
  262. }
  263. }
  264. public Location toLocation(String loc) {
  265. Location l = null;
  266. try {
  267. String[] locations = loc.split(",");
  268. l = new Location(Bukkit.getServer().getWorld(locations[0].trim()), Double.parseDouble(locations[1].trim()), Double.parseDouble(locations[2].trim()),
  269. Double.parseDouble(locations[3].trim()));
  270. } catch (Exception ex) {
  271. ex.printStackTrace();
  272. }
  273. return l;
  274. }
  275. }