From 72833734d80b730ca132289355656ea6875098c0 Mon Sep 17 00:00:00 2001 From: EtienneDx Date: Thu, 25 Apr 2019 16:52:01 +0200 Subject: [PATCH] Starting to get things in place --- src/me/EtienneDx/GPRE/DataStore.java | 65 ---------- src/me/EtienneDx/RealEstate/ClaimSell.java | 42 ++++++ src/me/EtienneDx/RealEstate/DataStore.java | 120 ++++++++++++++++++ src/me/EtienneDx/RealEstate/REListener.java | 14 ++ .../{GPRE => RealEstate}/RealEstate.java | 34 ++--- .../RealEstate/TransactionsStore.java | 31 +++++ 6 files changed, 221 insertions(+), 85 deletions(-) delete mode 100644 src/me/EtienneDx/GPRE/DataStore.java create mode 100644 src/me/EtienneDx/RealEstate/ClaimSell.java create mode 100644 src/me/EtienneDx/RealEstate/DataStore.java create mode 100644 src/me/EtienneDx/RealEstate/REListener.java rename src/me/EtienneDx/{GPRE => RealEstate}/RealEstate.java (80%) create mode 100644 src/me/EtienneDx/RealEstate/TransactionsStore.java diff --git a/src/me/EtienneDx/GPRE/DataStore.java b/src/me/EtienneDx/GPRE/DataStore.java deleted file mode 100644 index 2f5afcb..0000000 --- a/src/me/EtienneDx/GPRE/DataStore.java +++ /dev/null @@ -1,65 +0,0 @@ -package me.EtienneDx.GPRE; - -import java.io.File; -import java.util.Arrays; -import java.util.List; - -import org.bukkit.ChatColor; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.plugin.PluginDescriptionFile; - -public class DataStore -{ - RealEstate plugin; - public PluginDescriptionFile pdf; - - public final String pluginDirPath = "plugins" + File.separator + "GriefProtection_RealEstate" + File.separator; - public final String configFilePath = this.pluginDirPath + "config.yml"; - public final String logFilePath = this.pluginDirPath + "GriefProtection_RealEstate.log"; - public final String chatPrefix = "[" + ChatColor.GOLD + "RealEstate" + ChatColor.WHITE + "] "; - - public List cfgSigns; - - public List cfgSellKeywords; - public List cfgLeaseKeywords; - - public String cfgReplaceSell; - public String cfgReplaceLease; - - public boolean cfgEnableLease; - public boolean cfgEnableRent; - - public boolean cfgTransferClaimBlocks; - - public boolean cfgMessageOwner; - public boolean cfgBrodcastSell; - - public DataStore(RealEstate plugin) - { - this.plugin = plugin; - this.pdf = this.plugin.getDescription(); - } - - public String getString(List li) - { - return String.join(";", li); - } - - public List getList(String str) - { - return Arrays.asList(str.split(";")); - } - - List getConfigList(YamlConfiguration config, String path, List defVal) - { - config.addDefault(path, defVal); - return config.getStringList(path); - } - - public void loadConfig(YamlConfiguration config) - { - this.cfgSigns = getConfigList(config, "RealEstate.Keywords.Signs", Arrays.asList("re", "realestate")); - - this.cfgSigns = getConfigList(config, "RealEstate.Keywords.Signs", Arrays.asList("re", "realestate")); - } -} diff --git a/src/me/EtienneDx/RealEstate/ClaimSell.java b/src/me/EtienneDx/RealEstate/ClaimSell.java new file mode 100644 index 0000000..c116db4 --- /dev/null +++ b/src/me/EtienneDx/RealEstate/ClaimSell.java @@ -0,0 +1,42 @@ +package me.EtienneDx.RealEstate; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.bukkit.configuration.serialization.ConfigurationSerializable; +import org.bukkit.Location; +import org.bukkit.block.Sign; + +public class ClaimSell implements ConfigurationSerializable +{ + private long claimId; + private UUID owner = null; + private double price; + private Sign sign = null; + + public ClaimSell(Map map) + { + this.claimId = (long) map.get("claimId"); + if(map.get("owner") != null) + this.owner = UUID.fromString((String) map.get("owner")); + this.price = (double) map.get("price"); + if(map.get("signLocation") != null) + this.sign = (Sign)((Location)map.get("signLocation")).getBlock().getState(); + } + + @Override + public Map serialize() + { + Map map = new HashMap<>(); + + map.put("claimId", this.claimId); + if(owner != null) + map.put("owner", owner.toString()); + map.put("price", this.price); + if(sign != null) + map.put("signLocation", sign.getLocation()); + + return map; + } +} diff --git a/src/me/EtienneDx/RealEstate/DataStore.java b/src/me/EtienneDx/RealEstate/DataStore.java new file mode 100644 index 0000000..347dda9 --- /dev/null +++ b/src/me/EtienneDx/RealEstate/DataStore.java @@ -0,0 +1,120 @@ +package me.EtienneDx.RealEstate; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; + +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.plugin.PluginDescriptionFile; + +public class DataStore +{ + public PluginDescriptionFile pdf; + + public final String configFilePath = RealEstate.pluginDirPath + "config.yml"; + public final String logFilePath = RealEstate.pluginDirPath + "GriefProtection_RealEstate.log"; + public final String chatPrefix = "[" + ChatColor.GOLD + "RealEstate" + ChatColor.WHITE + "] "; + + public List cfgSigns; + + public List cfgSellKeywords; + public List cfgLeaseKeywords; + + public String cfgReplaceSell; + public String cfgReplaceLease; + + public boolean cfgEnableSell; + public boolean cfgEnableLease; + + public boolean cfgTransferClaimBlocks; + + public boolean cfgMessageOwner; + public boolean cfgBroadcastSell; + + public double cfgPriceSellPerBlock; + public double cfgPriceLeasePerBlock; + + public DataStore() + { + this.pdf = RealEstate.instance.getDescription(); + } + + public String getString(List li) + { + return String.join(";", li); + } + + public List getList(String str) + { + return Arrays.asList(str.split(";")); + } + + List getConfigList(YamlConfiguration config, String path, List defVal) + { + config.addDefault(path, defVal); + return config.getStringList(path); + } + + public void loadConfig(YamlConfiguration config) + { + this.cfgSigns = getConfigList(config, "RealEstate.Keywords.Signs", Arrays.asList("re", "realestate")); + + this.cfgSellKeywords = getConfigList(config, "RealEstate.Keywords.Sell", Arrays.asList("sell", "selling", "for sale")); + this.cfgLeaseKeywords = getConfigList(config, "RealEstate.Keywords.Lease", Arrays.asList("rent", "renting", "for rent", "lease", "for lease")); + + this.cfgReplaceSell = config.getString("RealEstate.Keywords.Replace.Sell", "FOR SALE"); + this.cfgReplaceLease = config.getString("RealEstate.Keywords.Replace.Lease", "FOR LEASE"); + + this.cfgEnableSell = config.getBoolean("RealEstate.Rules.Sell", true); + this.cfgEnableLease = config.getBoolean("RealEstate.Rules.Lease", true); + + this.cfgTransferClaimBlocks = config.getBoolean("RealEstate.Rules.TransferClaimBlocks", true); + + this.cfgMessageOwner = config.getBoolean("RealEstate.Messaging.MessageOwner", true); + this.cfgBroadcastSell = config.getBoolean("RealEstate.Messaging.BroadcastSell", true); + + this.cfgPriceSellPerBlock = config.getDouble("RealEstate.DefaultPricesPerBlock.Sell", 5.0); + this.cfgPriceLeasePerBlock = config.getDouble("RealEstate.DefaultPricesPerBlock.Lease", 2.0); + } + + public void loadConfig() + { + YamlConfiguration config = YamlConfiguration.loadConfiguration(new File(this.configFilePath)); + this.loadConfig(config); + } + + public void saveConfig() + { + FileConfiguration outConfig = new YamlConfiguration(); + outConfig.set("RealEstate.Keywords.Signs", this.cfgSigns); + + outConfig.set("RealEstate.Keywords.Sell", this.cfgSellKeywords); + outConfig.set("RealEstate.Keywords.Lease", this.cfgLeaseKeywords); + + outConfig.set("RealEstate.Keywords.Replace.Sell", this.cfgReplaceSell); + outConfig.set("RealEstate.Keywords.Replace.Lease", this.cfgReplaceLease); + + outConfig.set("RealEstate.Rules.Sell", this.cfgEnableSell); + outConfig.set("RealEstate.Rules.Lease", this.cfgEnableLease); + + outConfig.set("RealEstate.Rules.TransferClaimBlocks", this.cfgTransferClaimBlocks); + + outConfig.set("RealEstate.Messaging.MessageOwner", this.cfgMessageOwner); + outConfig.set("RealEstate.Messaging.BroadcastSell", this.cfgBroadcastSell); + + outConfig.set("RealEstate.DefaultPricePerBlock.Sell", this.cfgPriceSellPerBlock); + outConfig.set("RealEstate.DefaultPricePerBlock.Lease", this.cfgPriceLeasePerBlock); + + try + { + outConfig.save(this.configFilePath); + } + catch (IOException exception) + { + RealEstate.instance.log.info("Unable to write to the configuration file at \"" + this.configFilePath + "\""); + } + } +} diff --git a/src/me/EtienneDx/RealEstate/REListener.java b/src/me/EtienneDx/RealEstate/REListener.java new file mode 100644 index 0000000..3da35c4 --- /dev/null +++ b/src/me/EtienneDx/RealEstate/REListener.java @@ -0,0 +1,14 @@ +package me.EtienneDx.RealEstate; + +import org.bukkit.event.Listener; +import org.bukkit.plugin.PluginManager; + +public class REListener implements Listener +{ + void registerEvents() + { + PluginManager pm = RealEstate.instance.getServer().getPluginManager(); + + pm.registerEvents(this, RealEstate.instance); + } +} diff --git a/src/me/EtienneDx/GPRE/RealEstate.java b/src/me/EtienneDx/RealEstate/RealEstate.java similarity index 80% rename from src/me/EtienneDx/GPRE/RealEstate.java rename to src/me/EtienneDx/RealEstate/RealEstate.java index f5a6b38..3af4cbf 100644 --- a/src/me/EtienneDx/GPRE/RealEstate.java +++ b/src/me/EtienneDx/RealEstate/RealEstate.java @@ -1,4 +1,4 @@ -package me.EtienneDx.GPRE; +package me.EtienneDx.RealEstate; import java.io.File; import java.io.FileWriter; @@ -6,8 +6,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.util.logging.Logger; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.configuration.serialization.ConfigurationSerialization; import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; @@ -18,12 +17,18 @@ public class RealEstate extends JavaPlugin { Logger log; DataStore dataStore; + public final static String pluginDirPath = "plugins" + File.separator + "GriefProtection_RealEstate" + File.separator; public static boolean vaultPresent = false; public static Economy econ = null; public static Permission perms = null; + + public static RealEstate instance = null; + + public static TransactionsStore transactionsStore = null; public void onEnable() { + RealEstate.instance = this; this.log = getLogger(); if (checkVault()) @@ -52,24 +57,13 @@ public class RealEstate extends JavaPlugin return; } } - loadConfig(false); - } - - private void loadConfig(boolean reload) - { - FileConfiguration config = YamlConfiguration.loadConfiguration(new File(this.dataStore.configFilePath)); - FileConfiguration outConfig = new YamlConfiguration(); - + this.dataStore.loadConfig();// loads config or default + this.dataStore.saveConfig();// save eventual default - try - { - outConfig.save(this.dataStore.configFilePath); - } - catch (IOException exception) - { - this.log.info("Unable to write to the configuration file at \"" + this.dataStore.configFilePath + "\""); - } - } + ConfigurationSerialization.registerClass(ClaimSell.class); + + this.transactionsStore = new TransactionsStore(); + } public void addLogEntry(String entry) { diff --git a/src/me/EtienneDx/RealEstate/TransactionsStore.java b/src/me/EtienneDx/RealEstate/TransactionsStore.java new file mode 100644 index 0000000..136dfe9 --- /dev/null +++ b/src/me/EtienneDx/RealEstate/TransactionsStore.java @@ -0,0 +1,31 @@ +package me.EtienneDx.RealEstate; + +import java.io.File; +import java.util.ArrayList; + +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +public class TransactionsStore +{ + public final String dataFilePath = RealEstate.pluginDirPath + "transactions.data"; + + public ArrayList claimSell; + + public TransactionsStore() + { + claimSell = new ArrayList<>(); + + FileConfiguration config = YamlConfiguration.loadConfiguration(new File(this.dataFilePath)); + for(String key : config.getKeys(false)) + { + if(key.startsWith("Sell.")) + { + ClaimSell cs = (ClaimSell)config.get(key); + claimSell.add(cs); + } + } + } + + +}