Added rainbow extension

This commit is contained in:
Auxilor 2021-02-20 15:11:51 +00:00
parent 11d67a855a
commit 0f029de0c8
6 changed files with 162 additions and 0 deletions

View File

@ -0,0 +1,7 @@
group 'com.willfp'
version '1.0.0'
description = 'Rainbow Extension'
shadowJar {
archiveFileName = project.getDescription() + " v" + project.version + ".jar"
}

View File

@ -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<Material> 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();
}
}

View File

@ -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
}
}

View File

@ -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.

View File

@ -0,0 +1,3 @@
name: Rainbow
main: com.willfp.ecoenchants.rainbow.RainbowMain
version: ${projectVersion}

View File

@ -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'