Skip to content

Commit

Permalink
Added "ParkourTool.RemoveRightClickRestriction" to support geyser con…
Browse files Browse the repository at this point in the history
…trols

Added "Other.Display.CurrencyName" to show or hide currency name in messages
Fixed Restart cooldown being reset
  • Loading branch information
A5H73Y committed Mar 1, 2023
1 parent ee39fd7 commit ceea9c3
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ public DefaultConfig(File file) {
this.setDefault("CourseDefault.Command." + eventType.getConfigEntry(),
Collections.singletonList("")));

this.setDefault("ParkourTool.RemoveRightClickRestriction", false);
this.setDefault("ParkourTool.LastCheckpoint.Material", "ARROW");
this.setDefault("ParkourTool.LastCheckpoint.Slot", 0);
this.setDefault("ParkourTool.HideAll.Material", "BONE");
Expand Down Expand Up @@ -279,6 +280,7 @@ public DefaultConfig(File file) {
this.setDefault("Other.Display.OnlyReadyCourses", false);
this.setDefault("Other.Display.CompletedCourseJoinMessage", false);
this.setDefault("Other.Display.IncludeDeprecatedCommands", false);
this.setDefault("Other.Display.CurrencyName", true);

this.setDefault("Other.Time.StandardFormat", "HH:mm:ss");
this.setDefault("Other.Time.DetailedFormat", "HH:mm:ss:SSS");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,22 +40,22 @@ public PlayerInteractListener(final Parkour parkour) {
DefaultConfig config = parkour.getParkourConfig();
registerParkourTool(config.getLastCheckpointTool(), "LastCheckpoint",
(player, event) -> parkour.getPlayerManager().playerDie(player));

registerParkourTool(config.getHideAllDisabledTool(), "HideAll",
(player, event) -> handleHideAllTool(player));

registerParkourTool(config.getHideAllEnabledTool(), "HideAll",
(player, event) -> handleHideAllTool(player));

registerParkourTool(config.getLeaveTool(), "Leave",
(player, event) -> parkour.getPlayerManager().leaveCourse(player));

registerParkourTool(config.getRestartTool(), "Restart",
(player, event) -> handleRestartTool(player));

registerParkourTool(config.getRocketTool(), "Rockets", true, false, ParkourMode.ROCKETS,
(player, event) -> handleRocketTool(player));

registerParkourTool(config.getFreedomTool(), "Freedom", false, false, ParkourMode.FREEDOM,
(player, event) -> handleFreedomTool(player, event.getAction()));
}
Expand Down Expand Up @@ -113,13 +113,16 @@ public void onParkourToolInteract(PlayerInteractEvent event) {
// we know they are using a valid ParkourTool - cancel any default behaviour
event.setCancelled(true);

if (toolAction.isRightClickOnly()
&& !event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && !event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
if (!parkour.getParkourConfig().getBoolean("ParkourTool.RemoveRightClickRestriction")
&& (toolAction.isRightClickOnly()
&& !event.getAction().equals(Action.RIGHT_CLICK_BLOCK)
&& !event.getAction().equals(Action.RIGHT_CLICK_AIR))) {
return;
}

if (toolAction.isIncludeSneakCheck()
&& !player.isSneaking() && parkour.getParkourConfig().getBoolean("OnCourse.SneakToInteractItems")) {
&& !player.isSneaking()
&& parkour.getParkourConfig().getBoolean("OnCourse.SneakToInteractItems")) {
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.bukkit.entity.Damageable;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityCombustEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
Expand Down Expand Up @@ -130,7 +131,7 @@ public void onEntityDamage(EntityDamageEvent event) {
*
* @param event PlayerRespawnEvent
*/
@EventHandler
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onPlayerRespawn(PlayerRespawnEvent event) {
if (parkour.getParkourSessionManager().isPlaying(event.getPlayer())) {
parkour.getPlayerManager().playerDie(event.getPlayer());
Expand Down
40 changes: 29 additions & 11 deletions src/main/java/io/github/a5h73y/parkour/plugin/EconomyApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public class EconomyApi extends PluginWrapper {

private Economy economy;

private boolean displayCurrencyName;

public EconomyApi(Parkour parkour) {
super(parkour);
}
Expand Down Expand Up @@ -58,6 +60,7 @@ protected void initialise() {
}

economy = economyProvider.getProvider();
displayCurrencyName = parkour.getParkourConfig().getBoolean("Other.Display.CurrencyName");
}
}

Expand Down Expand Up @@ -123,12 +126,25 @@ public void giveEconomyPrize(Player player, String courseName) {
rewardPlayer(player, reward);

player.sendMessage(TranslationUtils.getTranslation("Economy.Reward")
.replace(AMOUNT_PLACEHOLDER, reward + getCurrencyName())
.replace(AMOUNT_PLACEHOLDER, getAmount(reward))
.replace(COURSE_PLACEHOLDER, courseName));
}
}
}

/**
* Get formatted value of amount.
* @param amount
* @return formatted amount
*/
public String getAmount(double amount) {
StringBuilder sb = new StringBuilder(String.valueOf(amount));
if (displayCurrencyName) {
sb.append(getCurrencyName());
}
return sb.toString();
}

/**
* Display the Economy information.
*
Expand Down Expand Up @@ -160,17 +176,17 @@ public boolean validateAndChargeCourseJoin(Player player, String courseName) {

if (joinFee > 0) {
boolean oneTimeFee = parkour.getConfigManager().getCourseConfig(courseName).isOneTimeFee();
if (!oneTimeFee || (oneTimeFee && !parkour.getPermissionVault().hasPaidOneTimeFee(player, courseName))) {
if (!oneTimeFee || !parkour.getPermissionVault().hasPaidOneTimeFee(player, courseName)) {
if (!hasAmount(player, joinFee)) {
player.sendMessage(TranslationUtils.getTranslation("Economy.Insufficient")
.replace(AMOUNT_PLACEHOLDER, joinFee + getCurrencyName())
.replace(AMOUNT_PLACEHOLDER, getAmount(joinFee))
.replace(COURSE_PLACEHOLDER, courseName));
allowed = false;

} else {
chargePlayer(player, joinFee);
player.sendMessage(TranslationUtils.getTranslation("Economy.Fee")
.replace(AMOUNT_PLACEHOLDER, joinFee + getCurrencyName())
.replace(AMOUNT_PLACEHOLDER, getAmount(joinFee))
.replace(COURSE_PLACEHOLDER, courseName));
if (oneTimeFee) {
parkour.getPermissionVault().setPaidOneTimeFee(player, courseName);
Expand Down Expand Up @@ -286,10 +302,11 @@ private void processAddCommand(CommandSender commandSender, String... args) {
return;
}

EconomyResponse response = economy.depositPlayer(targetPlayer, Double.parseDouble(args[3]));
double amount = Double.parseDouble(args[3]);
EconomyResponse response = economy.depositPlayer(targetPlayer, amount);
if (response.transactionSuccess()) {
TranslationUtils.sendMessage(commandSender, "Added &b" + args[3] + getCurrencyName() + "&f. "
+ args[2] + "'s new amount: &b" + economy.getBalance(targetPlayer) + getCurrencyName());
TranslationUtils.sendMessage(commandSender, "Added &b" + getAmount(amount) + "&f. "
+ args[2] + "'s new amount: &b" + getAmount(economy.getBalance(targetPlayer)));
} else {
TranslationUtils.sendMessage(commandSender, "Failed to add amount to Player.");
}
Expand All @@ -313,10 +330,11 @@ private void processDeductCommand(CommandSender commandSender, String... args) {
return;
}

EconomyResponse response = economy.withdrawPlayer(targetPlayer, Double.parseDouble(args[3]));
double amount = Double.parseDouble(args[3]);
EconomyResponse response = economy.withdrawPlayer(targetPlayer, amount);
if (response.transactionSuccess()) {
TranslationUtils.sendMessage(commandSender, "Deducted &b" + args[3] + getCurrencyName() + "&f. "
+ args[2] + "'s new amount: &b" + economy.getBalance(targetPlayer) + getCurrencyName());
TranslationUtils.sendMessage(commandSender, "Deducted &b" + getAmount(amount) + "&f. "
+ args[2] + "'s new amount: &b" + getAmount(economy.getBalance(targetPlayer)));
} else {
TranslationUtils.sendMessage(commandSender, "Failed to deduct amount to Player.");
}
Expand All @@ -335,6 +353,6 @@ private void processAmountCommand(CommandSender commandSender, String... args) {
return;
}

TranslationUtils.sendMessage(commandSender, args[2] + "'s balance: &b" + economy.getBalance(targetPlayer) + getCurrencyName());
TranslationUtils.sendMessage(commandSender, args[2] + "'s balance: &b" + getAmount(economy.getBalance(targetPlayer)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ public void sendInviteToPlayer(Challenge challenge, @Nullable Player targetPlaye
.replace(PLAYER_PLACEHOLDER, challenge.getChallengeHost().getName()));
if (challenge.getWager() != null) {
TranslationUtils.sendValueTranslation("Parkour.Challenge.InviteReceivedWager",
challenge.getWager() + parkour.getEconomyApi().getCurrencyName(), targetPlayer);
parkour.getEconomyApi().getAmount(challenge.getWager()), targetPlayer);
}
TranslationUtils.sendTranslation("Parkour.Challenge.AcceptDecline", false, targetPlayer);
}
Expand Down Expand Up @@ -275,7 +275,7 @@ public void completeChallenge(Player winner) {
double amount = challenge.getWager() * (challenge.getNumberOfParticipants() - 1);
parkour.getEconomyApi().rewardPlayer(winner, amount);
TranslationUtils.sendValueTranslation("Parkour.Challenge.WinnerWager",
amount + parkour.getEconomyApi().getCurrencyName(), winner);
parkour.getEconomyApi().getAmount(amount), winner);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1296,7 +1296,9 @@ private void preparePlayerForCourse(Player player, String courseName) {
parkour.getParkourSessionManager().hideVisibility(player, true);
}

TaskCooldowns.getInstance().clearCoolDowns(player);
TaskCooldowns.getInstance().clearCoolDowns((entry) ->
entry.getKey().startsWith(String.valueOf(player.getUniqueId()))
&& !entry.getKey().endsWith("Restart"));
}

private void resetDeathCounter(Player player) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import io.github.a5h73y.parkour.Parkour;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Predicate;

import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -107,6 +109,10 @@ public void clearCoolDowns(Player player) {
.removeIf(entry -> entry.getKey().startsWith(String.valueOf(player.getUniqueId())));
}

public void clearCoolDowns(Predicate<Map.Entry<String, Long>> filter) {
taskDelays.entrySet().removeIf(filter);
}

public void clearCoolDown(Player player, String eventName) {
taskDelays.remove(player.getUniqueId() + eventName);
}
Expand Down

0 comments on commit ceea9c3

Please sign in to comment.