1
0
mirror of https://e.coding.net/circlecloud/Residence.git synced 2025-11-25 21:56:06 +00:00

remove static class...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092
2015-09-24 18:11:35 +08:00
parent 6b0f5ac789
commit 1cffbc7687
48 changed files with 4273 additions and 5120 deletions

View File

@@ -5,14 +5,6 @@
package com.bekvon.bukkit.residence.protection;
import org.bukkit.ChatColor;
import com.bekvon.bukkit.residence.Residence;
import com.bekvon.bukkit.residence.economy.EconomyInterface;
import com.bekvon.bukkit.residence.event.ResidenceDeleteEvent;
import com.bekvon.bukkit.residence.event.ResidenceDeleteEvent.DeleteCause;
import com.bekvon.bukkit.residence.permissions.PermissionGroup;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
@@ -21,8 +13,15 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import com.bekvon.bukkit.residence.Residence;
import com.bekvon.bukkit.residence.economy.EconomyInterface;
import com.bekvon.bukkit.residence.event.ResidenceDeleteEvent;
import com.bekvon.bukkit.residence.event.ResidenceDeleteEvent.DeleteCause;
import com.bekvon.bukkit.residence.permissions.PermissionGroup;
/**
*
* @author Administrator
@@ -32,64 +31,125 @@ public class LeaseManager {
private Map<String, Long> leaseExpireTime;
ResidenceManager manager;
Residence plugin;
public LeaseManager(ResidenceManager m) {
public LeaseManager(final Residence plugin, final ResidenceManager m) {
this.plugin = plugin;
manager = m;
leaseExpireTime = Collections
.synchronizedMap(new HashMap<String, Long>());
leaseExpireTime = Collections.synchronizedMap(new HashMap<String, Long>());
}
public boolean leaseExpires(String area) {
return leaseExpireTime.containsKey(area);
public static LeaseManager load(final Residence plugin, final Map<String, Long> root, final ResidenceManager m) {
final LeaseManager l = new LeaseManager(plugin, m);
if (root != null) {
for (final Object val : root.values()) {
if (!(val instanceof Long)) {
root.remove(val);
}
}
l.leaseExpireTime = Collections.synchronizedMap(root);
}
return l;
}
public Date getExpireTime(String area) {
public void doExpirations() {
final Set<Entry<String, Long>> set = leaseExpireTime.entrySet();
final Iterator<Entry<String, Long>> it = set.iterator();
while (it.hasNext()) {
final Entry<String, Long> next = it.next();
if (next.getValue() <= System.currentTimeMillis()) {
final String resname = next.getKey();
final ClaimedResidence res = plugin.getResidenceManager().getByName(resname);
if (res == null) {
it.remove();
} else {
boolean renewed = false;
final String owner = res.getPermissions().getOwner();
final PermissionGroup limits = plugin.getPermissionManager().getGroup(owner, res.getPermissions().getWorld());
final int cost = this.getRenewCost(res);
if (plugin.getConfigManager().enableEconomy() && plugin.getConfigManager().autoRenewLeases()) {
if (cost == 0) {
renewed = true;
} else if (res.getBank().hasEnough(cost)) {
res.getBank().subtract(cost);
renewed = true;
if (plugin.getConfigManager().debugEnabled()) {
System.out.println("Lease Renewed From Residence Bank: " + resname);
}
} else if (plugin.getEconomyManager().canAfford(owner, cost)) {
if (plugin.getEconomyManager().subtract(owner, cost)) {
renewed = true;
if (plugin.getConfigManager().debugEnabled()) {
System.out.println("Lease Renewed From Economy: " + resname);
}
}
}
}
if (!renewed) {
if (!plugin.getConfigManager().enabledRentSystem() || !plugin.getRentManager().isRented(resname)) {
final ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(null, res, DeleteCause.LEASE_EXPIRE);
plugin.getServ().getPluginManager().callEvent(resevent);
if (!resevent.isCancelled()) {
manager.removeResidence(next.getKey());
it.remove();
if (plugin.getConfigManager().debugEnabled()) {
System.out.println("Lease NOT removed, Removing: " + resname);
}
}
}
} else {
if (plugin.getConfigManager().enableEconomy() && plugin.getConfigManager().enableLeaseMoneyAccount()) {
plugin.getEconomyManager().add("Lease Money", cost);
}
if (plugin.getConfigManager().debugEnabled()) {
System.out.println("Lease Renew Old: " + next.getValue());
}
next.setValue(System.currentTimeMillis() + daysToMs(limits.getLeaseGiveTime()));
if (plugin.getConfigManager().debugEnabled()) {
System.out.println("Lease Renew New: " + next.getValue());
}
}
}
}
}
}
public Date getExpireTime(final String area) {
if (leaseExpireTime.containsKey(area)) {
return new Date(leaseExpireTime.get(area));
}
return null;
}
public void removeExpireTime(String area) {
public int getRenewCost(final ClaimedResidence res) {
final PermissionGroup limits = plugin.getPermissionManager().getGroup(res.getPermissions().getOwner(), res.getPermissions().getWorld());
final double cost = limits.getLeaseRenewCost();
final int amount = (int) Math.ceil(res.getTotalSize() * cost);
return amount;
}
public boolean leaseExpires(final String area) {
return leaseExpireTime.containsKey(area);
}
public void removeExpireTime(final String area) {
leaseExpireTime.remove(area);
}
public void setExpireTime(String area, int days) {
this.setExpireTime(null, area, days);
}
public void setExpireTime(Player player, String area, int days) {
area = area.replace(".", "_");
if (manager.getByName(area) != null) {
leaseExpireTime.put(area,
daysToMs(days) + System.currentTimeMillis());
if (player != null)
player.sendMessage(ChatColor.GREEN
+ Residence.getLanguage().getPhrase("LeaseRenew",
getExpireTime(area).toString()));
} else {
if (player != null)
player.sendMessage(ChatColor.RED
+ Residence.getLanguage().getPhrase("InvalidArea"));
}
}
public void renewArea(String area, Player player) {
public void renewArea(final String area, final Player player) {
if (!leaseExpires(area)) {
player.sendMessage(ChatColor.RED
+ Residence.getLanguage().getPhrase("LeaseNotExpire"));
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("LeaseNotExpire"));
return;
}
PermissionGroup limits = Residence.getPermissionManager().getGroup(
player);
int max = limits.getMaxLeaseTime();
int add = limits.getLeaseGiveTime();
int rem = daysRemaining(area);
EconomyInterface econ = Residence.getEconomyManager();
final PermissionGroup limits = plugin.getPermissionManager().getGroup(player);
final int max = limits.getMaxLeaseTime();
final int add = limits.getLeaseGiveTime();
final int rem = daysRemaining(area);
final EconomyInterface econ = plugin.getEconomyManager();
if (econ != null) {
double cost = limits.getLeaseRenewCost();
ClaimedResidence res = manager.getByName(area);
int amount = (int) Math.ceil((double) res.getTotalSize() * cost);
final double cost = limits.getLeaseRenewCost();
final ClaimedResidence res = manager.getByName(area);
final int amount = (int) Math.ceil(res.getTotalSize() * cost);
if (cost != 0D) {
// Account account =
// iConomy.getBank().getAccount(player.getName());
@@ -99,156 +159,38 @@ public class LeaseManager {
*/) {
econ.subtract(player.getName(), amount);
econ.add("Lease Money", amount);
player.sendMessage(ChatColor.GREEN
+ Residence.getLanguage().getPhrase(
"MoneyCharged",
ChatColor.YELLOW
+ String.format("%d", amount)
+ ChatColor.GREEN + "."
+ ChatColor.YELLOW + econ.getName()
+ ChatColor.GREEN));
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("MoneyCharged",
ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN + "." + ChatColor.YELLOW + econ.getName() + ChatColor.GREEN));
} else {
player.sendMessage(ChatColor.RED
+ Residence.getLanguage().getPhrase(
"NotEnoughMoney"));
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotEnoughMoney"));
return;
}
}
}
if (rem + add > max) {
setExpireTime(player, area, max);
player.sendMessage(ChatColor.GOLD
+ Residence.getLanguage().getPhrase("LeaseRenewMax"));
player.sendMessage(ChatColor.YELLOW
+ Residence.getLanguage().getPhrase("LeaseRenew",
ChatColor.GREEN + "" + getExpireTime(area))
+ ChatColor.YELLOW);
player.sendMessage(ChatColor.GOLD + plugin.getLanguage().getPhrase("LeaseRenewMax"));
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("LeaseRenew", ChatColor.GREEN + "" + getExpireTime(area)) + ChatColor.YELLOW);
return;
}
Long get = leaseExpireTime.get(area);
if (get != null) {
get = get + daysToMs(add);
leaseExpireTime.put(area, get);
} else
} else {
leaseExpireTime.put(area, daysToMs(add));
player.sendMessage(ChatColor.YELLOW
+ Residence.getLanguage().getPhrase("LeaseRenew",
ChatColor.GREEN + "" + getExpireTime(area)));
}
public int getRenewCost(ClaimedResidence res) {
PermissionGroup limits = Residence.getPermissionManager().getGroup(
res.getPermissions().getOwner(),
res.getPermissions().getWorld());
double cost = limits.getLeaseRenewCost();
int amount = (int) Math.ceil((double) res.getTotalSize() * cost);
return amount;
}
private long daysToMs(int days) {
return (((long) days) * 24L * 60L * 60L * 1000L);
}
private int msToDays(long ms) {
return (int) Math.ceil(((((double) ms / 1000D) / 60D) / 60D) / 24D);
}
private int daysRemaining(String area) {
Long get = leaseExpireTime.get(area);
if (get <= System.currentTimeMillis())
return 0;
return msToDays((int) (get - System.currentTimeMillis()));
}
public void doExpirations() {
Set<Entry<String, Long>> set = leaseExpireTime.entrySet();
Iterator<Entry<String, Long>> it = set.iterator();
while (it.hasNext()) {
Entry<String, Long> next = it.next();
if (next.getValue() <= System.currentTimeMillis()) {
String resname = next.getKey();
ClaimedResidence res = Residence.getResidenceManager()
.getByName(resname);
if (res == null) {
it.remove();
} else {
boolean renewed = false;
String owner = res.getPermissions().getOwner();
PermissionGroup limits = Residence.getPermissionManager()
.getGroup(owner, res.getPermissions().getWorld());
int cost = this.getRenewCost(res);
if (Residence.getConfigManager().enableEconomy()
&& Residence.getConfigManager().autoRenewLeases()) {
if (cost == 0) {
renewed = true;
} else if (res.getBank().hasEnough(cost)) {
res.getBank().subtract(cost);
renewed = true;
if (Residence.getConfigManager().debugEnabled())
System.out
.println("Lease Renewed From Residence Bank: "
+ resname);
} else if (Residence.getEconomyManager().canAfford(
owner, cost)) {
if (Residence.getEconomyManager().subtract(owner,
cost)) {
renewed = true;
if (Residence.getConfigManager().debugEnabled())
System.out
.println("Lease Renewed From Economy: "
+ resname);
}
}
}
if (!renewed) {
if (!Residence.getConfigManager().enabledRentSystem()
|| !Residence.getRentManager()
.isRented(resname)) {
ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(
null, res, DeleteCause.LEASE_EXPIRE);
Residence.getServ().getPluginManager()
.callEvent(resevent);
if (!resevent.isCancelled()) {
manager.removeResidence(next.getKey());
it.remove();
if (Residence.getConfigManager().debugEnabled())
System.out
.println("Lease NOT removed, Removing: "
+ resname);
}
}
} else {
if (Residence.getConfigManager().enableEconomy()
&& Residence.getConfigManager()
.enableLeaseMoneyAccount()) {
Residence.getEconomyManager().add("Lease Money",
cost);
}
if (Residence.getConfigManager().debugEnabled())
System.out.println("Lease Renew Old: "
+ next.getValue());
next.setValue(System.currentTimeMillis()
+ daysToMs(limits.getLeaseGiveTime()));
if (Residence.getConfigManager().debugEnabled())
System.out.println("Lease Renew New: "
+ next.getValue());
}
}
}
}
player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("LeaseRenew", ChatColor.GREEN + "" + getExpireTime(area)));
}
public void resetLeases() {
leaseExpireTime.clear();
String[] list = manager.getResidenceList();
for (int i = 0; i < list.length; i++) {
if (list[i] != null) {
ClaimedResidence res = Residence.getResidenceManager()
.getByName(list[i]);
PermissionGroup group = Residence.getPermissionManager()
.getGroup(res.getPermissions().getOwner(),
res.getPermissions().getWorld());
this.setExpireTime(null, list[i], group.getLeaseGiveTime());
final String[] list = manager.getResidenceList();
for (final String element : list) {
if (element != null) {
final ClaimedResidence res = plugin.getResidenceManager().getByName(element);
final PermissionGroup group = plugin.getPermissionManager().getGroup(res.getPermissions().getOwner(), res.getPermissions().getWorld());
this.setExpireTime(null, element, group.getLeaseGiveTime());
}
}
System.out.println("[Residence] - Set default leases.");
@@ -258,23 +200,44 @@ public class LeaseManager {
return leaseExpireTime;
}
public void updateLeaseName(String oldName, String newName) {
public void setExpireTime(final Player player, String area, final int days) {
area = area.replace(".", "_");
if (manager.getByName(area) != null) {
leaseExpireTime.put(area, daysToMs(days) + System.currentTimeMillis());
if (player != null) {
player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("LeaseRenew", getExpireTime(area).toString()));
}
} else {
if (player != null) {
player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidArea"));
}
}
}
public void setExpireTime(final String area, final int days) {
this.setExpireTime(null, area, days);
}
public void updateLeaseName(final String oldName, final String newName) {
if (leaseExpireTime.containsKey(oldName)) {
leaseExpireTime.put(newName, leaseExpireTime.get(oldName));
leaseExpireTime.remove(oldName);
}
}
public static LeaseManager load(Map<String, Long> root, ResidenceManager m) {
LeaseManager l = new LeaseManager(m);
if (root != null) {
for (Object val : root.values()) {
if (!(val instanceof Long)) {
root.remove(val);
}
}
l.leaseExpireTime = Collections.synchronizedMap(root);
private int daysRemaining(final String area) {
final Long get = leaseExpireTime.get(area);
if (get <= System.currentTimeMillis()) {
return 0;
}
return l;
return msToDays((int) (get - System.currentTimeMillis()));
}
private long daysToMs(final int days) {
return ((days) * 24L * 60L * 60L * 1000L);
}
private int msToDays(final long ms) {
return (int) Math.ceil((((ms / 1000D) / 60D) / 60D) / 24D);
}
}