From 992c6a57c82e3bfa5615392b6c46d60c1f9dbb62 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 12 Jun 2021 19:28:48 +0100 Subject: [PATCH] Added Day + Night crystals --- .../willfp/talismans/talismans/Talismans.java | 4 ++ .../talismans/talismans/DayCrystal.java | 68 +++++++++++++++++++ .../talismans/talismans/NightCrystal.java | 68 +++++++++++++++++++ .../src/main/resources/talismans/day.yml | 28 ++++++++ .../src/main/resources/talismans/night.yml | 28 ++++++++ 5 files changed, 196 insertions(+) create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/DayCrystal.java create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/NightCrystal.java create mode 100644 eco-core/core-plugin/src/main/resources/talismans/day.yml create mode 100644 eco-core/core-plugin/src/main/resources/talismans/night.yml diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talismans.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talismans.java index 4173ed0..a8a2424 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talismans.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talismans.java @@ -9,6 +9,7 @@ import com.willfp.talismans.talismans.talismans.ArcheryTalisman; import com.willfp.talismans.talismans.talismans.AttackSpeedTalisman; import com.willfp.talismans.talismans.talismans.BossTalisman; import com.willfp.talismans.talismans.talismans.CreeperTalisman; +import com.willfp.talismans.talismans.talismans.DayCrystal; import com.willfp.talismans.talismans.talismans.EndTalisman; import com.willfp.talismans.talismans.talismans.ExperienceTalisman; import com.willfp.talismans.talismans.talismans.ExtractionTalisman; @@ -19,6 +20,7 @@ import com.willfp.talismans.talismans.talismans.GravityTalisman; import com.willfp.talismans.talismans.talismans.HealingTalisman; import com.willfp.talismans.talismans.talismans.ImmunityTalisman; import com.willfp.talismans.talismans.talismans.NetherTalisman; +import com.willfp.talismans.talismans.talismans.NightCrystal; import com.willfp.talismans.talismans.talismans.PoseidonTalisman; import com.willfp.talismans.talismans.talismans.RaidTalisman; import com.willfp.talismans.talismans.talismans.ResistanceTalisman; @@ -74,6 +76,8 @@ public class Talismans { public static final Talisman BOSS_TALISMAN = new BossTalisman(); public static final Talisman GRAVITY_TALISMAN = new GravityTalisman(); public static final Talisman ATTACK_SPEED_TALISMAN = new AttackSpeedTalisman(); + public static final Talisman DAY_CRYSTAL = new DayCrystal(); + public static final Talisman NIGHT_CRYSTAL = new NightCrystal(); /** * Get all registered {@link Talisman}s. diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/DayCrystal.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/DayCrystal.java new file mode 100644 index 0000000..5f567fa --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/DayCrystal.java @@ -0,0 +1,68 @@ +package com.willfp.talismans.talismans.talismans; + +import com.willfp.talismans.talismans.Talisman; +import com.willfp.talismans.talismans.TalismanLevel; +import com.willfp.talismans.talismans.Talismans; +import org.bukkit.World; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.entity.Trident; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.jetbrains.annotations.NotNull; + +public class DayCrystal extends Talisman { + public DayCrystal() { + super("day"); + } + + @Override + public void onMeleeAttack(@NotNull final TalismanLevel level, + @NotNull final Player attacker, + @NotNull final LivingEntity victim, + @NotNull final EntityDamageByEntityEvent event) { + if (!attacker.getWorld().getEnvironment().equals(World.Environment.NORMAL)) { + return; + } + + if (!(attacker.getWorld().getTime() < 12300 && attacker.getWorld().getTime() > 23850)) { + return; + } + + event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100)); + } + + @Override + public void onArrowDamage(@NotNull final TalismanLevel level, + @NotNull final Player attacker, + @NotNull final LivingEntity victim, + @NotNull final Arrow arrow, + @NotNull final EntityDamageByEntityEvent event) { + if (!attacker.getWorld().getEnvironment().equals(World.Environment.NORMAL)) { + return; + } + + if (!(attacker.getWorld().getTime() < 12300 && attacker.getWorld().getTime() > 23850)) { + return; + } + + event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100)); + } + + @Override + public void onTridentDamage(@NotNull final TalismanLevel level, + @NotNull final Player attacker, + @NotNull final LivingEntity victim, + @NotNull final Trident trident, + @NotNull final EntityDamageByEntityEvent event) { + if (!attacker.getWorld().getEnvironment().equals(World.Environment.NORMAL)) { + return; + } + + if (!(attacker.getWorld().getTime() < 12300 && attacker.getWorld().getTime() > 23850)) { + return; + } + + event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100)); + } +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/NightCrystal.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/NightCrystal.java new file mode 100644 index 0000000..04f89a6 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/NightCrystal.java @@ -0,0 +1,68 @@ +package com.willfp.talismans.talismans.talismans; + +import com.willfp.talismans.talismans.Talisman; +import com.willfp.talismans.talismans.TalismanLevel; +import com.willfp.talismans.talismans.Talismans; +import org.bukkit.World; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.entity.Trident; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.jetbrains.annotations.NotNull; + +public class NightCrystal extends Talisman { + public NightCrystal() { + super("night"); + } + + @Override + public void onMeleeAttack(@NotNull final TalismanLevel level, + @NotNull final Player attacker, + @NotNull final LivingEntity victim, + @NotNull final EntityDamageByEntityEvent event) { + if (!attacker.getWorld().getEnvironment().equals(World.Environment.NORMAL)) { + return; + } + + if (!(attacker.getWorld().getTime() > 12300 && attacker.getWorld().getTime() < 23850)) { + return; + } + + event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100)); + } + + @Override + public void onArrowDamage(@NotNull final TalismanLevel level, + @NotNull final Player attacker, + @NotNull final LivingEntity victim, + @NotNull final Arrow arrow, + @NotNull final EntityDamageByEntityEvent event) { + if (!attacker.getWorld().getEnvironment().equals(World.Environment.NORMAL)) { + return; + } + + if (!(attacker.getWorld().getTime() > 12300 && attacker.getWorld().getTime() < 23850)) { + return; + } + + event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100)); + } + + @Override + public void onTridentDamage(@NotNull final TalismanLevel level, + @NotNull final Player attacker, + @NotNull final LivingEntity victim, + @NotNull final Trident trident, + @NotNull final EntityDamageByEntityEvent event) { + if (!attacker.getWorld().getEnvironment().equals(World.Environment.NORMAL)) { + return; + } + + if (!(attacker.getWorld().getTime() > 12300 && attacker.getWorld().getTime() < 23850)) { + return; + } + + event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100)); + } +} diff --git a/eco-core/core-plugin/src/main/resources/talismans/day.yml b/eco-core/core-plugin/src/main/resources/talismans/day.yml new file mode 100644 index 0000000..17a861f --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/talismans/day.yml @@ -0,0 +1,28 @@ +enabled: true +disabled-in-worlds: [ ] + +levels: + 1: + name: "&aDay Crystal" + description: Deal 10% more damage at daytime. + + obtaining: + craftable: true + recipe: + - daylight_sensor + - netherite_sword + - daylight_sensor + + - netherite_sword + - ender_eye + - netherite_sword + + - daylight_sensor + - netherite_sword + - daylight_sensor + + general-config: + material: nether_star + + config: + percent-more-damage: 10 \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/resources/talismans/night.yml b/eco-core/core-plugin/src/main/resources/talismans/night.yml new file mode 100644 index 0000000..c014022 --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/talismans/night.yml @@ -0,0 +1,28 @@ +enabled: true +disabled-in-worlds: [ ] + +levels: + 1: + name: "&aNight Crystal" + description: Deal 10% more damage at daytime. + + obtaining: + craftable: true + recipe: + - clock + - netherite_sword + - clock + + - netherite_sword + - ender_eye + - netherite_sword + + - clock + - netherite_sword + - clock + + general-config: + material: nether_star + + config: + percent-more-damage: 10 \ No newline at end of file