added container rent

This commit is contained in:
EtienneDx 2021-05-26 11:31:33 +02:00
parent d7fa646356
commit a14504861f
4 changed files with 39 additions and 15 deletions

View File

@ -28,6 +28,8 @@ public class Config extends AnnotationConfig
public List<String> cfgSellKeywords = Arrays.asList("[sell]", "[sell claim]", "[sc]", "[re]", "[realestate]"); public List<String> cfgSellKeywords = Arrays.asList("[sell]", "[sell claim]", "[sc]", "[re]", "[realestate]");
@ConfigField(name="RealEstate.Keywords.Rent", comment = "List of all possible possible signs headers to rent a claim") @ConfigField(name="RealEstate.Keywords.Rent", comment = "List of all possible possible signs headers to rent a claim")
public List<String> cfgRentKeywords = Arrays.asList("[rent]", "[rent claim]", "[rc]"); public List<String> cfgRentKeywords = Arrays.asList("[rent]", "[rent claim]", "[rc]");
@ConfigField(name="RealEstate.Keywords.ContainerRent", comment = "List of all possible possible signs headers to rent a claim")
public List<String> cfgContainerRentKeywords = Arrays.asList("[container rent]", "[crent]");
@ConfigField(name="RealEstate.Keywords.Lease", comment = "List of all possible possible signs headers to lease a claim") @ConfigField(name="RealEstate.Keywords.Lease", comment = "List of all possible possible signs headers to lease a claim")
public List<String> cfgLeaseKeywords = Arrays.asList("[lease]", "[lease claim]", "[lc]"); public List<String> cfgLeaseKeywords = Arrays.asList("[lease]", "[lease claim]", "[lc]");
@ -39,6 +41,8 @@ public class Config extends AnnotationConfig
public String cfgReplaceLease = "FOR LEASE"; public String cfgReplaceLease = "FOR LEASE";
@ConfigField(name="RealEstate.Keywords.Replace.Ongoing.Rent", comment = "What is displayed on the first line of the sign once someone rents a claim.") @ConfigField(name="RealEstate.Keywords.Replace.Ongoing.Rent", comment = "What is displayed on the first line of the sign once someone rents a claim.")
public String cfgReplaceOngoingRent = "[Rented]"; public String cfgReplaceOngoingRent = "[Rented]";
@ConfigField(name="RealEstate.Keywords.Replace.ContainerRent", comment = "What is displayed on the third line of the sign when renting container access only.")
public String cfgContainerRentLine = ChatColor.BLUE + "Containers only";
@ConfigField(name="RealEstate.Rules.Sell", comment = "Is selling claims enabled?") @ConfigField(name="RealEstate.Rules.Sell", comment = "Is selling claims enabled?")
public boolean cfgEnableSell = true; public boolean cfgEnableSell = true;

View File

@ -35,7 +35,8 @@ public class REListener implements Listener
{ {
if(RealEstate.instance.config.cfgSellKeywords.contains(event.getLine(0).toLowerCase()) || if(RealEstate.instance.config.cfgSellKeywords.contains(event.getLine(0).toLowerCase()) ||
RealEstate.instance.config.cfgLeaseKeywords.contains(event.getLine(0).toLowerCase()) || RealEstate.instance.config.cfgLeaseKeywords.contains(event.getLine(0).toLowerCase()) ||
RealEstate.instance.config.cfgRentKeywords.contains(event.getLine(0).toLowerCase())) RealEstate.instance.config.cfgRentKeywords.contains(event.getLine(0).toLowerCase()) ||
RealEstate.instance.config.cfgContainerRentKeywords.contains(event.getLine(0).toLowerCase()))
{ {
Player player = event.getPlayer(); Player player = event.getPlayer();
Location loc = event.getBlock().getLocation(); Location loc = event.getBlock().getLocation();
@ -144,7 +145,8 @@ public class REListener implements Listener
event.setCancelled(true);// need to cancel the event, so we can update the sign elsewhere event.setCancelled(true);// need to cancel the event, so we can update the sign elsewhere
RealEstate.transactionsStore.sell(claim, claim.isAdminClaim() ? null : player, price, event.getBlock().getLocation()); RealEstate.transactionsStore.sell(claim, claim.isAdminClaim() ? null : player, price, event.getBlock().getLocation());
} }
else if(RealEstate.instance.config.cfgRentKeywords.contains(event.getLine(0).toLowerCase()))// we want to rent it else if(RealEstate.instance.config.cfgRentKeywords.contains(event.getLine(0).toLowerCase()) ||
RealEstate.instance.config.cfgContainerRentKeywords.contains(event.getLine(0).toLowerCase()))// we want to rent it
{ {
if(!RealEstate.instance.config.cfgEnableRent) if(!RealEstate.instance.config.cfgEnableRent)
{ {
@ -253,7 +255,8 @@ public class REListener implements Listener
// all should be good, we can create the rent // all should be good, we can create the rent
event.setCancelled(true); event.setCancelled(true);
RealEstate.transactionsStore.rent(claim, player, price, event.getBlock().getLocation(), duration, rentPeriods); RealEstate.transactionsStore.rent(claim, player, price, event.getBlock().getLocation(), duration, rentPeriods,
RealEstate.instance.config.cfgRentKeywords.contains(event.getLine(0).toLowerCase()));
} }
else if(RealEstate.instance.config.cfgLeaseKeywords.contains(event.getLine(0).toLowerCase()))// we want to rent it else if(RealEstate.instance.config.cfgLeaseKeywords.contains(event.getLine(0).toLowerCase()))// we want to rent it
{ {

View File

@ -28,6 +28,7 @@ public class ClaimRent extends BoughtTransaction
LocalDateTime startDate = null; LocalDateTime startDate = null;
int duration; int duration;
public boolean autoRenew = false; public boolean autoRenew = false;
public boolean buildTrust = true;
public int periodCount = 0; public int periodCount = 0;
public int maxPeriod; public int maxPeriod;
@ -40,13 +41,20 @@ public class ClaimRent extends BoughtTransaction
autoRenew = (boolean) map.get("autoRenew"); autoRenew = (boolean) map.get("autoRenew");
periodCount = (int) map.get("periodCount"); periodCount = (int) map.get("periodCount");
maxPeriod = (int) map.get("maxPeriod"); maxPeriod = (int) map.get("maxPeriod");
try {
buildTrust = (boolean) map.get("buildTrust");
}
catch (Exception e) {
buildTrust = true;
}
} }
public ClaimRent(Claim claim, Player player, double price, Location sign, int duration, int rentPeriods) public ClaimRent(Claim claim, Player player, double price, Location sign, int duration, int rentPeriods, boolean buildTrust)
{ {
super(claim, player, price, sign); super(claim, player, price, sign);
this.duration = duration; this.duration = duration;
this.maxPeriod = RealEstate.instance.config.cfgEnableRentPeriod ? rentPeriods : 1; this.maxPeriod = RealEstate.instance.config.cfgEnableRentPeriod ? rentPeriods : 1;
this.buildTrust = buildTrust;
} }
@Override @Override
@ -59,6 +67,7 @@ public class ClaimRent extends BoughtTransaction
map.put("autoRenew", autoRenew); map.put("autoRenew", autoRenew);
map.put("periodCount", periodCount); map.put("periodCount", periodCount);
map.put("maxPeriod", maxPeriod); map.put("maxPeriod", maxPeriod);
map.put("buildTrust", buildTrust);
return map; return map;
} }
@ -74,15 +83,16 @@ public class ClaimRent extends BoughtTransaction
s.setLine(0, RealEstate.instance.config.cfgSignsHeader); s.setLine(0, RealEstate.instance.config.cfgSignsHeader);
s.setLine(1, ChatColor.DARK_GREEN + RealEstate.instance.config.cfgReplaceRent); s.setLine(1, ChatColor.DARK_GREEN + RealEstate.instance.config.cfgReplaceRent);
//s.setLine(2, owner != null ? Bukkit.getOfflinePlayer(owner).getName() : "SERVER"); //s.setLine(2, owner != null ? Bukkit.getOfflinePlayer(owner).getName() : "SERVER");
String price_line = "";
if(RealEstate.instance.config.cfgUseCurrencySymbol) if(RealEstate.instance.config.cfgUseCurrencySymbol)
{ {
if(RealEstate.instance.config.cfgUseDecimalCurrency == false) if(RealEstate.instance.config.cfgUseDecimalCurrency == false)
{ {
s.setLine(2, RealEstate.instance.config.cfgCurrencySymbol + " " + (int)Math.round(price)); price_line = RealEstate.instance.config.cfgCurrencySymbol + " " + (int)Math.round(price);
} }
else else
{ {
s.setLine(2, RealEstate.instance.config.cfgCurrencySymbol + " " + price); price_line = RealEstate.instance.config.cfgCurrencySymbol + " " + price;
} }
} }
@ -90,14 +100,21 @@ public class ClaimRent extends BoughtTransaction
{ {
if(RealEstate.instance.config.cfgUseDecimalCurrency == false) if(RealEstate.instance.config.cfgUseDecimalCurrency == false)
{ {
s.setLine(2, (int)Math.round(price) + " " + RealEstate.econ.currencyNamePlural()); price_line = (int)Math.round(price) + " " + RealEstate.econ.currencyNamePlural();
} }
else else
{ {
s.setLine(2, price + " " + RealEstate.econ.currencyNamePlural()); price_line = price + " " + RealEstate.econ.currencyNamePlural();
} }
} }
s.setLine(3, (maxPeriod > 1 ? maxPeriod + "x " : "") + Utils.getTime(duration, null, false)); String period = (maxPeriod > 1 ? maxPeriod + "x " : "") + Utils.getTime(duration, null, false);
if(this.buildTrust) {
s.setLine(2, price_line);
s.setLine(3, period);
} else {
s.setLine(2, RealEstate.instance.config.cfgContainerRentLine);
s.setLine(3, price_line + " - " + period);
}
s.update(true); s.update(true);
} }
else else
@ -311,7 +328,7 @@ public class ClaimRent extends BoughtTransaction
buyer = player.getUniqueId(); buyer = player.getUniqueId();
startDate = LocalDateTime.now(); startDate = LocalDateTime.now();
autoRenew = false; autoRenew = false;
claim.setPermission(buyer.toString(), ClaimPermission.Build); claim.setPermission(buyer.toString(), buildTrust ? ClaimPermission.Build : ClaimPermission.Inventory);
claim.allowGrantPermission(player); claim.allowGrantPermission(player);
claim.managers.add(player.getUniqueId().toString()); claim.managers.add(player.getUniqueId().toString());
claim.setSubclaimRestrictions(true); claim.setSubclaimRestrictions(true);

View File

@ -218,15 +218,15 @@ public class TransactionsStore
} }
} }
public void rent(Claim claim, Player player, double price, Location sign, int duration, int rentPeriods) public void rent(Claim claim, Player player, double price, Location sign, int duration, int rentPeriods, boolean buildTrust)
{ {
ClaimRent cr = new ClaimRent(claim, claim.isAdminClaim() ? null : player, price, sign, duration, rentPeriods); ClaimRent cr = new ClaimRent(claim, claim.isAdminClaim() ? null : player, price, sign, duration, rentPeriods, buildTrust);
claimRent.put(claim.getID().toString(), cr); claimRent.put(claim.getID().toString(), cr);
cr.update(); cr.update();
saveData(); saveData();
RealEstate.instance.addLogEntry("[" + this.dateFormat.format(this.date) + "] " + (player == null ? "The Server" : player.getName()) + RealEstate.instance.addLogEntry("[" + this.dateFormat.format(this.date) + "] " + (player == null ? "The Server" : player.getName()) +
" has made " + (claim.isAdminClaim() ? "an admin" : "a") + " " + (claim.parent == null ? "claim" : "subclaim") + " for rent at " + " has made " + (claim.isAdminClaim() ? "an admin" : "a") + " " + (claim.parent == null ? "claim" : "subclaim") + " for" + (buildTrust ? "" : " container") + " rent at " +
"[" + claim.getLesserBoundaryCorner().getWorld() + ", " + "[" + claim.getLesserBoundaryCorner().getWorld() + ", " +
"X: " + claim.getLesserBoundaryCorner().getBlockX() + ", " + "X: " + claim.getLesserBoundaryCorner().getBlockX() + ", " +
"Y: " + claim.getLesserBoundaryCorner().getBlockY() + ", " + "Y: " + claim.getLesserBoundaryCorner().getBlockY() + ", " +
@ -236,7 +236,7 @@ public class TransactionsStore
if(player != null) if(player != null)
{ {
player.sendMessage(RealEstate.instance.config.chatPrefix + ChatColor.AQUA + "You have successfully put " + player.sendMessage(RealEstate.instance.config.chatPrefix + ChatColor.AQUA + "You have successfully put " +
(claim.isAdminClaim() ? "an admin" : "a") + " " + (claim.parent == null ? "claim" : "subclaim") + " for rent for " + (claim.isAdminClaim() ? "an admin" : "a") + " " + (claim.parent == null ? "claim" : "subclaim") + " for" + (buildTrust ? "" : " container") + " rent for " +
ChatColor.GREEN + price + " " + RealEstate.econ.currencyNamePlural()); ChatColor.GREEN + price + " " + RealEstate.econ.currencyNamePlural());
} }
if(RealEstate.instance.config.cfgBroadcastSell) if(RealEstate.instance.config.cfgBroadcastSell)
@ -247,7 +247,7 @@ public class TransactionsStore
{ {
p.sendMessage(RealEstate.instance.config.chatPrefix + ChatColor.DARK_GREEN + (player == null ? "The Server" : player.getDisplayName()) + p.sendMessage(RealEstate.instance.config.chatPrefix + ChatColor.DARK_GREEN + (player == null ? "The Server" : player.getDisplayName()) +
ChatColor.AQUA + " has put " + ChatColor.AQUA + " has put " +
(claim.isAdminClaim() ? "an admin" : "a") + " " + (claim.parent == null ? "claim" : "subclaim") + " for rent for " + (claim.isAdminClaim() ? "an admin" : "a") + " " + (claim.parent == null ? "claim" : "subclaim") + " for" + (buildTrust ? "" : " container") + " rent for " +
ChatColor.GREEN + price + " " + RealEstate.econ.currencyNamePlural()); ChatColor.GREEN + price + " " + RealEstate.econ.currencyNamePlural());
} }
} }