From 10918e284e5d87cd9e789996ed0d198611ee6ff0 Mon Sep 17 00:00:00 2001 From: lars Date: Mon, 22 Jul 2024 19:39:35 +0200 Subject: [PATCH] added custom advancements appliance --- .../java/eu/mhsl/craftattack/spawn/Main.java | 4 +++- .../CustomAdvancements.java | 22 +++++++++++++++++++ ...ustomAdvancementsDamageEntityListener.java | 20 +++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancements.java create mode 100644 src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancementsDamageEntityListener.java diff --git a/src/main/java/eu/mhsl/craftattack/spawn/Main.java b/src/main/java/eu/mhsl/craftattack/spawn/Main.java index f6a9248..e8b8aee 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/Main.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/Main.java @@ -4,6 +4,7 @@ import eu.mhsl.craftattack.spawn.aggregates.displayName.DisplayName; import eu.mhsl.craftattack.spawn.api.HttpServer; import eu.mhsl.craftattack.spawn.appliance.Appliance; import eu.mhsl.craftattack.spawn.appliances.adminMarker.AdminMarker; +import eu.mhsl.craftattack.spawn.appliances.customAdvancements.CustomAdvancements; import eu.mhsl.craftattack.spawn.appliances.fleischerchest.Fleischerchest; import eu.mhsl.craftattack.spawn.appliances.kick.Kick; import eu.mhsl.craftattack.spawn.appliances.chatMessages.ChatMessages; @@ -57,7 +58,8 @@ public final class Main extends JavaPlugin { new Outlawed(), new DisplayName(), new Debug(), - new Fleischerchest() + new Fleischerchest(), + new CustomAdvancements() ); Bukkit.getLogger().info("Loading appliances..."); diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancements.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancements.java new file mode 100644 index 0000000..861013c --- /dev/null +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancements.java @@ -0,0 +1,22 @@ +package eu.mhsl.craftattack.spawn.appliances.customAdvancements; + +import eu.mhsl.craftattack.spawn.appliance.Appliance; +import org.bukkit.Bukkit; +import org.bukkit.NamespacedKey; +import org.bukkit.entity.Player; +import org.bukkit.event.Listener; +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.Objects; + +public class CustomAdvancements extends Appliance { + public void grantAdvancement(String advancementName, Player player) { + player.getAdvancementProgress(Objects.requireNonNull(Bukkit.getAdvancement(Objects.requireNonNull(NamespacedKey.fromString("custom_advancements:craftattack/" + advancementName))))).awardCriteria("criteria"); + } + + @Override + protected @NotNull List eventHandlers() { + return List.of(new CustomAdvancementsDamageEntityListener()); + } +} diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancementsDamageEntityListener.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancementsDamageEntityListener.java new file mode 100644 index 0000000..0b890ef --- /dev/null +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancementsDamageEntityListener.java @@ -0,0 +1,20 @@ +package eu.mhsl.craftattack.spawn.appliances.customAdvancements; + +import eu.mhsl.craftattack.spawn.appliance.ApplianceListener; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityDamageByEntityEvent; + +public class CustomAdvancementsDamageEntityListener extends ApplianceListener { + @EventHandler + public void onEntityDamageEntity(EntityDamageByEntityEvent event) { + Entity damaged = event.getEntity(); + if(!(damaged instanceof Player)) return; + Entity damager = event.getDamager(); + if(!(damager instanceof Player)) return; + if(damaged.hasPermission("admin")) { + getAppliance().grantAdvancement("search_trouble", (Player) damager); + } + } +}