From 0efb8c6c9e38d1c18ed2daf95893d89337e5613d Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 16 Jan 2021 15:54:37 +0000 Subject: [PATCH] Added gravity talisman/ring/relic --- .../willfp/talismans/talismans/Talismans.java | 6 ++++ .../talismans/relic/GravityRelic.java | 30 ++++++++++++++++++ .../talismans/talismans/ring/GravityRing.java | 30 ++++++++++++++++++ .../talismans/talisman/GravityTalisman.java | 30 ++++++++++++++++++ .../talismans/relic/gravityrelic.yml | 31 +++++++++++++++++++ .../resources/talismans/ring/gravityring.yml | 31 +++++++++++++++++++ .../talismans/talisman/gravitytalisman.yml | 31 +++++++++++++++++++ 7 files changed, 189 insertions(+) create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/relic/GravityRelic.java create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/ring/GravityRing.java create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/talisman/GravityTalisman.java create mode 100644 eco-core/core-plugin/src/main/resources/talismans/relic/gravityrelic.yml create mode 100644 eco-core/core-plugin/src/main/resources/talismans/ring/gravityring.yml create mode 100644 eco-core/core-plugin/src/main/resources/talismans/talisman/gravitytalisman.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 e241c15..9937735 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 @@ -14,6 +14,7 @@ import com.willfp.talismans.talismans.talismans.relic.ExtractionRelic; import com.willfp.talismans.talismans.talismans.relic.FeatherRelic; import com.willfp.talismans.talismans.talismans.relic.FlameRelic; import com.willfp.talismans.talismans.talismans.relic.FluxRelic; +import com.willfp.talismans.talismans.talismans.relic.GravityRelic; import com.willfp.talismans.talismans.talismans.relic.HealingRelic; import com.willfp.talismans.talismans.talismans.relic.NetherRelic; import com.willfp.talismans.talismans.talismans.relic.PoseidonRelic; @@ -31,6 +32,7 @@ import com.willfp.talismans.talismans.talismans.ring.ExtractionRing; import com.willfp.talismans.talismans.talismans.ring.FeatherRing; import com.willfp.talismans.talismans.talismans.ring.FlameRing; import com.willfp.talismans.talismans.talismans.ring.FluxRing; +import com.willfp.talismans.talismans.talismans.ring.GravityRing; import com.willfp.talismans.talismans.talismans.ring.HealingRing; import com.willfp.talismans.talismans.talismans.ring.NetherRing; import com.willfp.talismans.talismans.talismans.ring.PoseidonRing; @@ -49,6 +51,7 @@ import com.willfp.talismans.talismans.talismans.talisman.ExtractionTalisman; import com.willfp.talismans.talismans.talismans.talisman.FeatherTalisman; import com.willfp.talismans.talismans.talismans.talisman.FlameTalisman; import com.willfp.talismans.talismans.talismans.talisman.FluxTalisman; +import com.willfp.talismans.talismans.talismans.talisman.GravityTalisman; import com.willfp.talismans.talismans.talismans.talisman.HealingTalisman; import com.willfp.talismans.talismans.talismans.talisman.ImmunityTalisman; import com.willfp.talismans.talismans.talismans.talisman.NetherTalisman; @@ -139,6 +142,9 @@ public class Talismans { public static final Talisman BOSS_TALISMAN = new BossTalisman(); public static final Talisman BOSS_RING = new BossRing(); public static final Talisman BOSS_RELIC = new BossRelic(); + public static final Talisman GRAVITY_TALISMAN = new GravityTalisman(); + public static final Talisman GRAVITY_RING = new GravityRing(); + public static final Talisman GRAVITY_RELIC = new GravityRelic(); /** * Get all registered {@link Talisman}s. diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/relic/GravityRelic.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/relic/GravityRelic.java new file mode 100644 index 0000000..baef272 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/relic/GravityRelic.java @@ -0,0 +1,30 @@ +package com.willfp.talismans.talismans.talismans.relic; + +import com.willfp.talismans.talismans.Talisman; +import com.willfp.talismans.talismans.Talismans; +import com.willfp.talismans.talismans.meta.TalismanStrength; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageEvent; +import org.jetbrains.annotations.NotNull; + +public class GravityRelic extends Talisman { + public GravityRelic() { + super("gravity_relic", TalismanStrength.RELIC); + } + + @Override + public void onDamage(@NotNull final Player victim, + @NotNull final EntityDamageEvent event) { + if (victim.getLocation().getY() > 64 || victim.getLocation().getY() < 0) { + return; + } + + double below64 = 64 - victim.getLocation().getY(); + double multiplier = below64 / 64; + double multiplierMultiplier = this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "height-multiplier"); + multiplier *= multiplierMultiplier; + multiplier += 1; + + event.setDamage(event.getDamage() * (1 / multiplier)); + } +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/ring/GravityRing.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/ring/GravityRing.java new file mode 100644 index 0000000..3474d00 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/ring/GravityRing.java @@ -0,0 +1,30 @@ +package com.willfp.talismans.talismans.talismans.ring; + +import com.willfp.talismans.talismans.Talisman; +import com.willfp.talismans.talismans.Talismans; +import com.willfp.talismans.talismans.meta.TalismanStrength; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageEvent; +import org.jetbrains.annotations.NotNull; + +public class GravityRing extends Talisman { + public GravityRing() { + super("gravity_ring", TalismanStrength.RING); + } + + @Override + public void onDamage(@NotNull final Player victim, + @NotNull final EntityDamageEvent event) { + if (victim.getLocation().getY() > 64 || victim.getLocation().getY() < 0) { + return; + } + + double below64 = 64 - victim.getLocation().getY(); + double multiplier = below64 / 64; + double multiplierMultiplier = this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "height-multiplier"); + multiplier *= multiplierMultiplier; + multiplier += 1; + + event.setDamage(event.getDamage() * (1 / multiplier)); + } +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/talisman/GravityTalisman.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/talisman/GravityTalisman.java new file mode 100644 index 0000000..4f0a4d6 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/talisman/GravityTalisman.java @@ -0,0 +1,30 @@ +package com.willfp.talismans.talismans.talismans.talisman; + +import com.willfp.talismans.talismans.Talisman; +import com.willfp.talismans.talismans.Talismans; +import com.willfp.talismans.talismans.meta.TalismanStrength; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageEvent; +import org.jetbrains.annotations.NotNull; + +public class GravityTalisman extends Talisman { + public GravityTalisman() { + super("gravity_talisman", TalismanStrength.TALISMAN); + } + + @Override + public void onDamage(@NotNull final Player victim, + @NotNull final EntityDamageEvent event) { + if (victim.getLocation().getY() > 64 || victim.getLocation().getY() < 0) { + return; + } + + double below64 = 64 - victim.getLocation().getY(); + double multiplier = below64 / 64; + double multiplierMultiplier = this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "height-multiplier"); + multiplier *= multiplierMultiplier; + multiplier += 1; + + event.setDamage(event.getDamage() * (1 / multiplier)); + } +} diff --git a/eco-core/core-plugin/src/main/resources/talismans/relic/gravityrelic.yml b/eco-core/core-plugin/src/main/resources/talismans/relic/gravityrelic.yml new file mode 100644 index 0000000..ad3203b --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/talismans/relic/gravityrelic.yml @@ -0,0 +1,31 @@ +name: "Gravity Relic" +description: Take less damage lower down you are, up to 4x less. +enabled: true + +obtaining: + # Recipes are left-right, top-bottom + # The first item is the top left, the second is top middle, and so on. The last is bottom right. + recipe: + - talismans:gravity_relic + - talismans:gravity_relic + - talismans:gravity_relic + + - talismans:gravity_relic + - nether_star + - talismans:gravity_relic + + - talismans:gravity_relic + - talismans:gravity_relic + - talismans:gravity_relic + +general-config: + disabled-in-worlds: [] + # Texture is base64, https://minecraft-heads.com has a list of skulls. + texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTFhZjRiNzg0ZjExNDY1OTk2ZmNkNDNkMDg4MzgxY2QzODFmZDRjZThhZTRmMjlmMzY4YTI3MWI5OGYwMzgyMiJ9fX0= + +config: + # Formula is ((distance below y = 64)/64) * multiplier + 1 times less + # So if multiplier is 2, and you're at y = 1: + # distance below y = 63 + # 63/64 * multiplier is roughly 2, +1 = 3x less + height-multiplier: 3 \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/resources/talismans/ring/gravityring.yml b/eco-core/core-plugin/src/main/resources/talismans/ring/gravityring.yml new file mode 100644 index 0000000..24389e1 --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/talismans/ring/gravityring.yml @@ -0,0 +1,31 @@ +name: "Gravity Ring" +description: Take less damage lower down you are, up to 3x less. +enabled: true + +obtaining: + # Recipes are left-right, top-bottom + # The first item is the top left, the second is top middle, and so on. The last is bottom right. + recipe: + - talismans:gravity_talisman + - talismans:gravity_talisman + - talismans:gravity_talisman + + - talismans:gravity_talisman + - heart_of_the_sea + - talismans:gravity_talisman + + - talismans:gravity_talisman + - talismans:gravity_talisman + - talismans:gravity_talisman + +general-config: + disabled-in-worlds: [] + # Texture is base64, https://minecraft-heads.com has a list of skulls. + texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTY0ZjEwZjE1OWM5MjA0ZmM3NzIwMmIzZGFjZGRmMGQwZTNhMjVlY2EyZGVhYjNmOTJhNmEyNTIzMTAxMzc3ZSJ9fX0= + +config: + # Formula is ((distance below y = 64)/64) * multiplier + 1 times less + # So if multiplier is 2, and you're at y = 1: + # distance below y = 63 + # 63/64 * multiplier is roughly 2, +1 = 3x less + height-multiplier: 2 \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/resources/talismans/talisman/gravitytalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/gravitytalisman.yml new file mode 100644 index 0000000..39fc474 --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/talismans/talisman/gravitytalisman.yml @@ -0,0 +1,31 @@ +name: "Gravity Talisman" +description: Take less damage lower down you are, up to 2x less. +enabled: true + +obtaining: + # Recipes are left-right, top-bottom + # The first item is the top left, the second is top middle, and so on. The last is bottom right. + recipe: + - stone + - obsidian + - stone + + - obsidian + - ender_eye + - obsidian + + - stone + - obsidian + - stone + +general-config: + disabled-in-worlds: [] + # Texture is base64, https://minecraft-heads.com has a list of skulls. + texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWIzYTk0ZGZmYTU5MDk5MGRiMDAzZmUyNjg0NDJmNzkyYmVjNjE0ZWNlNWZiMThkOTkwNmU3NmU1NDE4N2ZiMSJ9fX0= + +config: + # Formula is ((distance below y = 64)/64) * multiplier + 1 times less + # So if multiplier is 2, and you're at y = 1: + # distance below y = 63 + # 63/64 * multiplier is roughly 2, +1 = 3x less + height-multiplier: 1 \ No newline at end of file