Starting to get things in place

This commit is contained in:
EtienneDx 2019-04-25 16:52:01 +02:00
parent 162eff537d
commit 72833734d8
6 changed files with 221 additions and 85 deletions

View File

@ -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<String> cfgSigns;
public List<String> cfgSellKeywords;
public List<String> 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<String> li)
{
return String.join(";", li);
}
public List<String> getList(String str)
{
return Arrays.asList(str.split(";"));
}
List<String> getConfigList(YamlConfiguration config, String path, List<String> 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"));
}
}

View File

@ -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<String, Object> 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<String, Object> serialize()
{
Map<String, Object> 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;
}
}

View File

@ -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<String> cfgSigns;
public List<String> cfgSellKeywords;
public List<String> 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<String> li)
{
return String.join(";", li);
}
public List<String> getList(String str)
{
return Arrays.asList(str.split(";"));
}
List<String> getConfigList(YamlConfiguration config, String path, List<String> 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 + "\"");
}
}
}

View File

@ -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);
}
}

View File

@ -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)
{

View File

@ -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> 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);
}
}
}
}