From 0f029de0c8b9bc35f36d04800adc08191dc258dc Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 20 Feb 2021 15:11:51 +0000 Subject: [PATCH] Added rainbow extension --- eco-extensions/rainbow/build.gradle | 7 ++ .../willfp/ecoenchants/rainbow/Rainbow.java | 71 +++++++++++++++++++ .../ecoenchants/rainbow/RainbowMain.java | 24 +++++++ .../resources/enchants/normal/rainbow.yml | 56 +++++++++++++++ .../rainbow/src/main/resources/extension.yml | 3 + settings.gradle | 1 + 6 files changed, 162 insertions(+) create mode 100644 eco-extensions/rainbow/build.gradle create mode 100644 eco-extensions/rainbow/src/main/java/com/willfp/ecoenchants/rainbow/Rainbow.java create mode 100644 eco-extensions/rainbow/src/main/java/com/willfp/ecoenchants/rainbow/RainbowMain.java create mode 100644 eco-extensions/rainbow/src/main/resources/enchants/normal/rainbow.yml create mode 100644 eco-extensions/rainbow/src/main/resources/extension.yml diff --git a/eco-extensions/rainbow/build.gradle b/eco-extensions/rainbow/build.gradle new file mode 100644 index 00000000..06a445a1 --- /dev/null +++ b/eco-extensions/rainbow/build.gradle @@ -0,0 +1,7 @@ +group 'com.willfp' +version '1.0.0' +description = 'Rainbow Extension' + +shadowJar { + archiveFileName = project.getDescription() + " v" + project.version + ".jar" +} \ No newline at end of file diff --git a/eco-extensions/rainbow/src/main/java/com/willfp/ecoenchants/rainbow/Rainbow.java b/eco-extensions/rainbow/src/main/java/com/willfp/ecoenchants/rainbow/Rainbow.java new file mode 100644 index 00000000..1fb38000 --- /dev/null +++ b/eco-extensions/rainbow/src/main/java/com/willfp/ecoenchants/rainbow/Rainbow.java @@ -0,0 +1,71 @@ +package com.willfp.ecoenchants.rainbow; + +import com.willfp.eco.util.drops.DropQueue; +import com.willfp.ecoenchants.enchantments.EcoEnchant; +import com.willfp.ecoenchants.enchantments.EcoEnchants; +import com.willfp.ecoenchants.enchantments.meta.EnchantmentType; +import com.willfp.ecoenchants.enchantments.util.EnchantmentUtils; +import org.bukkit.GameMode; +import org.bukkit.Material; +import org.bukkit.Tag; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class Rainbow extends EcoEnchant { + public Rainbow() { + super( + "rainbow", EnchantmentType.NORMAL + ); + } + + @Override + public void onBlockBreak(@NotNull final Player player, + @NotNull final Block block, + final int level, + @NotNull final BlockBreakEvent event) { + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { + return; + } + + if (!EnchantmentUtils.passedChance(this, level)) { + return; + } + + if (!Tag.LEAVES.isTagged(block.getType())) { + return; + } + + event.setDropItems(false); + + Material toDrop; + + List materials = new ArrayList<>(); + + for (String materialName : this.getConfig().getStrings(EcoEnchants.CONFIG_LOCATION + "items")) { + Material material = Material.getMaterial(materialName.toUpperCase()); + if (material != null) { + materials.add(material); + } + } + + toDrop = materials.get(new Random().nextInt(materials.size())); + + if (toDrop == null) { + toDrop = block.getType(); + } + + ItemStack item = new ItemStack(toDrop, 1); + + new DropQueue(player) + .setLocation(block.getLocation()) + .addItem(item) + .push(); + } +} diff --git a/eco-extensions/rainbow/src/main/java/com/willfp/ecoenchants/rainbow/RainbowMain.java b/eco-extensions/rainbow/src/main/java/com/willfp/ecoenchants/rainbow/RainbowMain.java new file mode 100644 index 00000000..3e0fb2b4 --- /dev/null +++ b/eco-extensions/rainbow/src/main/java/com/willfp/ecoenchants/rainbow/RainbowMain.java @@ -0,0 +1,24 @@ +package com.willfp.ecoenchants.rainbow; + +import com.willfp.eco.util.extensions.Extension; +import com.willfp.eco.util.plugin.AbstractEcoPlugin; +import com.willfp.ecoenchants.enchantments.EcoEnchant; +import org.jetbrains.annotations.NotNull; + +public class RainbowMain extends Extension { + public static final EcoEnchant RAINBOW = new Rainbow(); + + public RainbowMain(@NotNull final AbstractEcoPlugin plugin) { + super(plugin); + } + + @Override + public void onEnable() { + // Handled by super + } + + @Override + public void onDisable() { + // Handled by super + } +} diff --git a/eco-extensions/rainbow/src/main/resources/enchants/normal/rainbow.yml b/eco-extensions/rainbow/src/main/resources/enchants/normal/rainbow.yml new file mode 100644 index 00000000..2adfb984 --- /dev/null +++ b/eco-extensions/rainbow/src/main/resources/enchants/normal/rainbow.yml @@ -0,0 +1,56 @@ +# +# Rainbow EcoEnchant +# + +name: "Rainbow" +description: Chance to drop flowers and dyes from leaves. +enabled: true + +obtaining: + table: true + villager: true + loot: true + rarity: rare + +general-config: + targets: + - axe + - shears + grindstoneable: true + disabled-in-worlds: [] + conflicts: + - silk_touch + maximum-level: 4 + +config: + items: + - white_dye + - orange_dye + - magenta_dye + - light_blue_dye + - yellow_dye + - lime_dye + - pink_dye + - gray_dye + - light_gray_dye + - cyan_dye + - purple_dye + - blue_dye + - brown_dye + - green_dye + - red_dye + - black_dye + - dandelion + - poppy + - blue_orchid + - allium + - azure_bluet + - red_tulip + - orange_tulip + - white_tulip + - pink_tulip + - oxeye_daisy + - cornflower + - lily_of_the_valley + - wither_rose + chance-per-level: 3 # Chance to drop item. \ No newline at end of file diff --git a/eco-extensions/rainbow/src/main/resources/extension.yml b/eco-extensions/rainbow/src/main/resources/extension.yml new file mode 100644 index 00000000..83fa2fda --- /dev/null +++ b/eco-extensions/rainbow/src/main/resources/extension.yml @@ -0,0 +1,3 @@ +name: Rainbow +main: com.willfp.ecoenchants.rainbow.RainbowMain +version: ${projectVersion} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 4f36a7f9..f032784c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -19,6 +19,7 @@ include ':eco-extensions:endershot' include ':eco-extensions:firewand' include ':eco-extensions:mmo' include ':eco-extensions:precision' +include ':eco-extensions:rainbow' include ':eco-extensions:sprint-artifacts' include ':eco-extensions:summoning' include ':eco-extensions:xray' \ No newline at end of file