From 8cfd098be97710b884f8d0219088bd3711fb66e6 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sun, 10 Nov 2024 19:21:24 +0800 Subject: [PATCH] add passenger condition --- .../resources/configs/custom-placeholders.yml | 7 ++- .../requirement/BukkitRequirementManager.java | 8 +++ .../builtin/PassengerRequirement.java | 55 +++++++++++++++++++ 3 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 bukkit/src/main/java/net/momirealms/customnameplates/bukkit/requirement/builtin/PassengerRequirement.java diff --git a/backend/src/main/resources/configs/custom-placeholders.yml b/backend/src/main/resources/configs/custom-placeholders.yml index 8f3e0a8..9fb0c9b 100644 --- a/backend/src/main/resources/configs/custom-placeholders.yml +++ b/backend/src/main/resources/configs/custom-placeholders.yml @@ -2,21 +2,22 @@ conditional-text: actionbar: priority_1: - text: '%np_background_other_actionbar%' + text: '%np_background_other_actionbar%' # hides the money hud when a player rides something or dives in water conditions: '||': + is-passenger: true '!=': value1: '%player_remaining_air%' value2: "300" '!gamemode': survival priority_2: - text: '%np_static_money_hud%%np_offset_-179%%np_static_other_actionbar%' + text: '%np_static_money_hud%%np_offset_-179%%np_static_other_actionbar%' # displays the money hud + other plugin's actionbar message conditions: '!equals': value1: '%np_actionbar%' value2: "" priority_3: - text: '%np_static_money_hud%' + text: '%np_static_money_hud%' # displays the money hud only weather: priority_1: text: 'Sunny' diff --git a/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/requirement/BukkitRequirementManager.java b/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/requirement/BukkitRequirementManager.java index ac0aac5..1eee99c 100644 --- a/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/requirement/BukkitRequirementManager.java +++ b/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/requirement/BukkitRequirementManager.java @@ -52,6 +52,14 @@ public class BukkitRequirementManager extends AbstractRequirementManager { this.registerGameMode(); this.registerBedrock(); this.registerDisguise(); + this.registerPassenger(); + } + + private void registerPassenger() { + this.registerRequirement((args, interval) -> { + boolean is = (boolean) args; + return new PassengerRequirement(interval, is); + }, "is-passenger"); } private void registerDisguise() { diff --git a/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/requirement/builtin/PassengerRequirement.java b/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/requirement/builtin/PassengerRequirement.java new file mode 100644 index 0000000..b458159 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/requirement/builtin/PassengerRequirement.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) <2024> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.momirealms.customnameplates.bukkit.requirement.builtin; + +import com.google.common.base.Objects; +import net.momirealms.customnameplates.api.CNPlayer; +import net.momirealms.customnameplates.backend.requirement.AbstractRequirement; +import org.bukkit.entity.Player; + +public class PassengerRequirement extends AbstractRequirement { + + private final boolean is; + + public PassengerRequirement(int refreshInterval, boolean is) { + super(refreshInterval); + this.is = is; + } + + @Override + public boolean isSatisfied(CNPlayer p1, CNPlayer p2) { + return ((Player) p1.player()).isInsideVehicle(); + } + + @Override + public String type() { + return "is-passenger"; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof PassengerRequirement that)) return false; + return is == that.is; + } + + @Override + public int hashCode() { + return Objects.hashCode(is); + } +}