mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 11:45:51 +00:00
commit
5a37c36826
@ -301,56 +301,70 @@ public final class SlimefunItems {
|
||||
|
||||
public static final SlimefunItemStack BOOTS_OF_THE_STOMPER = new SlimefunItemStack("BOOTS_OF_THE_STOMPER", Material.LEATHER_BOOTS, Color.AQUA, "&bBoots of the Stomper", "", "&9All Fall Damage you receive", "&9will be applied to nearby Mobs/Players", "", "&9+ No Fall Damage");
|
||||
|
||||
public static final SlimefunItemStack BEE_HELMET = new SlimefunItemStack("BEE_HELMET", Material.GOLDEN_HELMET, "&e&lBee Helmet", " ", "&e&oNOT THE BEES");
|
||||
public static final SlimefunItemStack BEE_WINGS = new SlimefunItemStack("BEE_WINGS", Material.ELYTRA, "&e&lBee Wings", " ", "&e&oFly Like a Bee", " ", "&9Activates Slow falling", "&9When approaching the ground", " ");
|
||||
public static final SlimefunItemStack BEE_LEGGINGS = new SlimefunItemStack("BEE_LEGGINGS", Material.GOLDEN_LEGGINGS, "&e&lBee Leggings", " ", "&e&oBee like a Bee");
|
||||
public static final SlimefunItemStack BEE_BOOTS = new SlimefunItemStack("BEE_BOOTS", Material.GOLDEN_BOOTS, "&e&lBee Boots", "", "&e&oNever have trouble taking off again", "", "&9+ Jump Boost", "&9+ No Fall Damage");
|
||||
|
||||
static {
|
||||
Map<Enchantment, Integer> cactus = new HashMap<>();
|
||||
cactus.put(Enchantment.THORNS, 3);
|
||||
cactus.put(Enchantment.DURABILITY, 6);
|
||||
Map<Enchantment, Integer> cactusEnchs = new HashMap<>();
|
||||
cactusEnchs.put(Enchantment.THORNS, 3);
|
||||
cactusEnchs.put(Enchantment.DURABILITY, 6);
|
||||
|
||||
CACTUS_HELMET.addUnsafeEnchantments(cactus);
|
||||
CACTUS_CHESTPLATE.addUnsafeEnchantments(cactus);
|
||||
CACTUS_LEGGINGS.addUnsafeEnchantments(cactus);
|
||||
CACTUS_BOOTS.addUnsafeEnchantments(cactus);
|
||||
CACTUS_HELMET.addUnsafeEnchantments(cactusEnchs);
|
||||
CACTUS_CHESTPLATE.addUnsafeEnchantments(cactusEnchs);
|
||||
CACTUS_LEGGINGS.addUnsafeEnchantments(cactusEnchs);
|
||||
CACTUS_BOOTS.addUnsafeEnchantments(cactusEnchs);
|
||||
|
||||
Map<Enchantment, Integer> damascus = new HashMap<>();
|
||||
damascus.put(Enchantment.DURABILITY, 5);
|
||||
damascus.put(Enchantment.PROTECTION_ENVIRONMENTAL, 5);
|
||||
Map<Enchantment, Integer> damascusEnchs = new HashMap<>();
|
||||
damascusEnchs.put(Enchantment.DURABILITY, 5);
|
||||
damascusEnchs.put(Enchantment.PROTECTION_ENVIRONMENTAL, 5);
|
||||
|
||||
DAMASCUS_STEEL_HELMET.addUnsafeEnchantments(damascus);
|
||||
DAMASCUS_STEEL_CHESTPLATE.addUnsafeEnchantments(damascus);
|
||||
DAMASCUS_STEEL_LEGGINGS.addUnsafeEnchantments(damascus);
|
||||
DAMASCUS_STEEL_BOOTS.addUnsafeEnchantments(damascus);
|
||||
DAMASCUS_STEEL_HELMET.addUnsafeEnchantments(damascusEnchs);
|
||||
DAMASCUS_STEEL_CHESTPLATE.addUnsafeEnchantments(damascusEnchs);
|
||||
DAMASCUS_STEEL_LEGGINGS.addUnsafeEnchantments(damascusEnchs);
|
||||
DAMASCUS_STEEL_BOOTS.addUnsafeEnchantments(damascusEnchs);
|
||||
|
||||
Map<Enchantment, Integer> reinforced = new HashMap<>();
|
||||
reinforced.put(Enchantment.DURABILITY, 9);
|
||||
reinforced.put(Enchantment.PROTECTION_ENVIRONMENTAL, 9);
|
||||
Map<Enchantment, Integer> reinforcedEnchs = new HashMap<>();
|
||||
reinforcedEnchs.put(Enchantment.DURABILITY, 9);
|
||||
reinforcedEnchs.put(Enchantment.PROTECTION_ENVIRONMENTAL, 9);
|
||||
|
||||
REINFORCED_ALLOY_HELMET.addUnsafeEnchantments(reinforced);
|
||||
REINFORCED_ALLOY_CHESTPLATE.addUnsafeEnchantments(reinforced);
|
||||
REINFORCED_ALLOY_LEGGINGS.addUnsafeEnchantments(reinforced);
|
||||
REINFORCED_ALLOY_BOOTS.addUnsafeEnchantments(reinforced);
|
||||
REINFORCED_ALLOY_HELMET.addUnsafeEnchantments(reinforcedEnchs);
|
||||
REINFORCED_ALLOY_CHESTPLATE.addUnsafeEnchantments(reinforcedEnchs);
|
||||
REINFORCED_ALLOY_LEGGINGS.addUnsafeEnchantments(reinforcedEnchs);
|
||||
REINFORCED_ALLOY_BOOTS.addUnsafeEnchantments(reinforcedEnchs);
|
||||
|
||||
Map<Enchantment, Integer> gilded = new HashMap<>();
|
||||
gilded.put(Enchantment.DURABILITY, 6);
|
||||
gilded.put(Enchantment.PROTECTION_ENVIRONMENTAL, 8);
|
||||
Map<Enchantment, Integer> gildedEnchs = new HashMap<>();
|
||||
gildedEnchs.put(Enchantment.DURABILITY, 6);
|
||||
gildedEnchs.put(Enchantment.PROTECTION_ENVIRONMENTAL, 8);
|
||||
|
||||
GILDED_IRON_HELMET.addUnsafeEnchantments(gilded);
|
||||
GILDED_IRON_CHESTPLATE.addUnsafeEnchantments(gilded);
|
||||
GILDED_IRON_LEGGINGS.addUnsafeEnchantments(gilded);
|
||||
GILDED_IRON_BOOTS.addUnsafeEnchantments(gilded);
|
||||
GILDED_IRON_HELMET.addUnsafeEnchantments(gildedEnchs);
|
||||
GILDED_IRON_CHESTPLATE.addUnsafeEnchantments(gildedEnchs);
|
||||
GILDED_IRON_LEGGINGS.addUnsafeEnchantments(gildedEnchs);
|
||||
GILDED_IRON_BOOTS.addUnsafeEnchantments(gildedEnchs);
|
||||
|
||||
GOLDEN_HELMET_12K.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
|
||||
GOLDEN_CHESTPLATE_12K.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
|
||||
GOLDEN_LEGGINGS_12K.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
|
||||
GOLDEN_BOOTS_12K.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
|
||||
|
||||
Map<Enchantment, Integer> slime = new HashMap<>();
|
||||
slime.put(Enchantment.DURABILITY, 4);
|
||||
slime.put(Enchantment.PROTECTION_ENVIRONMENTAL, 2);
|
||||
Map<Enchantment, Integer> slimeEnchs = new HashMap<>();
|
||||
slimeEnchs.put(Enchantment.DURABILITY, 4);
|
||||
slimeEnchs.put(Enchantment.PROTECTION_ENVIRONMENTAL, 2);
|
||||
|
||||
SLIME_HELMET_STEEL.addUnsafeEnchantments(slime);
|
||||
SLIME_CHESTPLATE_STEEL.addUnsafeEnchantments(slime);
|
||||
SLIME_LEGGINGS_STEEL.addUnsafeEnchantments(slime);
|
||||
SLIME_BOOTS_STEEL.addUnsafeEnchantments(slime);
|
||||
SLIME_HELMET_STEEL.addUnsafeEnchantments(slimeEnchs);
|
||||
SLIME_CHESTPLATE_STEEL.addUnsafeEnchantments(slimeEnchs);
|
||||
SLIME_LEGGINGS_STEEL.addUnsafeEnchantments(slimeEnchs);
|
||||
SLIME_BOOTS_STEEL.addUnsafeEnchantments(slimeEnchs);
|
||||
|
||||
Map<Enchantment, Integer> beeEnchs = new HashMap<>();
|
||||
beeEnchs.put(Enchantment.DURABILITY, 4);
|
||||
beeEnchs.put(Enchantment.PROTECTION_ENVIRONMENTAL, 2);
|
||||
|
||||
BEE_HELMET.addUnsafeEnchantments(beeEnchs);
|
||||
BEE_WINGS.addUnsafeEnchantments(beeEnchs);
|
||||
BEE_LEGGINGS.addUnsafeEnchantments(beeEnchs);
|
||||
BEE_BOOTS.addUnsafeEnchantments(beeEnchs);
|
||||
}
|
||||
|
||||
/* Magical components */
|
||||
|
@ -59,6 +59,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.items.weapons.VampireBl
|
||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.AncientAltarListener;
|
||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.BackpackListener;
|
||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.BeeListener;
|
||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.BeeWingListener;
|
||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.BlockListener;
|
||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.BlockPhysicsListener;
|
||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.CargoNodeListener;
|
||||
@ -452,6 +453,7 @@ public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon {
|
||||
|
||||
if (minecraftVersion.isAtLeast(MinecraftVersion.MINECRAFT_1_15)) {
|
||||
new BeeListener(this);
|
||||
new BeeWingListener(this);
|
||||
}
|
||||
|
||||
if (minecraftVersion.isAtLeast(MinecraftVersion.MINECRAFT_1_16)) {
|
||||
|
@ -0,0 +1,89 @@
|
||||
package io.github.thebusybiscuit.slimefun4.implementation.listeners;
|
||||
|
||||
import org.bukkit.HeightMap;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems;
|
||||
import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.SlimefunUtils;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
/**
|
||||
* This {@link Listener} is responsible for the slow falling effect given to the player
|
||||
* when nearing the ground while using the Bee Wings.
|
||||
*
|
||||
* @author beSnow
|
||||
* @author Linox
|
||||
*
|
||||
*/
|
||||
public class BeeWingListener implements Listener {
|
||||
|
||||
public BeeWingListener(@Nonnull SlimefunPlugin plugin) {
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onApproachGround(PlayerMoveEvent e) {
|
||||
Player player = e.getPlayer();
|
||||
|
||||
// Checking if the player is even falling.
|
||||
if (e.getTo().getBlockY() == e.getFrom().getBlockY()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!player.isGliding()) return;
|
||||
if (player.isOnGround()) return;
|
||||
|
||||
if (player.hasPotionEffect(PotionEffectType.SLOW_FALLING)) return;
|
||||
|
||||
ItemStack chestplate = player.getInventory().getChestplate();
|
||||
if (!SlimefunUtils.isItemSimilar(chestplate, SlimefunItems.BEE_WINGS, true) || !Slimefun.hasUnlocked(player, chestplate, true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Location loc = player.getLocation();
|
||||
int distanceToHighestBlock = (loc.getBlockY() - player.getWorld().getHighestBlockYAt(loc, HeightMap.WORLD_SURFACE));
|
||||
|
||||
// getDistanceToGround will only fire when playerDistanceToHighestBlock is negative (which happens when a player is flying under an existing structure)
|
||||
if (distanceToHighestBlock < 0) {
|
||||
int distanceToGround = getDistanceToGround(loc.getBlock(), 6);
|
||||
if (distanceToGround < 1) return;
|
||||
|
||||
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_FALLING, 40, 0));
|
||||
return;
|
||||
}
|
||||
else if (distanceToHighestBlock <= 6) {
|
||||
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_FALLING, 40, 0));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the distance of the given {@link Block} from the ground.
|
||||
*
|
||||
* @param b
|
||||
* The {@link Block} to calculate from.
|
||||
* @param limit
|
||||
* The limit of {@link Block blocks} to check under the given {@link Block b}.
|
||||
*
|
||||
*/
|
||||
private int getDistanceToGround(@Nonnull Block b, int limit) {
|
||||
for (int i = 1; i <= limit; i++) {
|
||||
Block relative = b.getRelative(0, -i, 0);
|
||||
if (relative.getType().isSolid()) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.EnderPearl;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -65,6 +66,9 @@ public class SlimefunBootsListener implements Listener {
|
||||
if (boots instanceof StomperBoots) {
|
||||
e.setCancelled(true);
|
||||
((StomperBoots) boots).stomp(e);
|
||||
} else if (boots.getID().equals("BEE_BOOTS")) {
|
||||
e.setCancelled(true);
|
||||
e.getEntity().getWorld().playSound(e.getEntity().getLocation(), Sound.BLOCK_HONEY_BLOCK_FALL, 1f, 2f);
|
||||
} else if (boots.getID().equals("SLIME_BOOTS") || boots.getID().equals("SLIME_STEEL_BOOTS")) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
|
@ -279,6 +279,7 @@ public final class ResearchSetup {
|
||||
register("even_higher_tier_capacitors", 266, "Tier 3 Capacitors", 40, SlimefunItems.ENERGIZED_CAPACITOR);
|
||||
register("caveman_talisman", 267, "Talisman of the Caveman", 20, SlimefunItems.TALISMAN_CAVEMAN);
|
||||
register("elytra_cap", 268, "Crash Gear", 20, SlimefunItems.ELYTRA_CAP);
|
||||
register("bee_armor", 269, "Bee Armor", 24, SlimefunItems.BEE_HELMET, SlimefunItems.BEE_WINGS, SlimefunItems.BEE_LEGGINGS, SlimefunItems.BEE_BOOTS);
|
||||
}
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
|
@ -3063,6 +3063,25 @@ public final class SlimefunItemSetup {
|
||||
.register(plugin);
|
||||
}
|
||||
|
||||
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_15)) {
|
||||
new SlimefunItem(categories.magicalArmor, SlimefunItems.BEE_HELMET, RecipeType.ARMOR_FORGE,
|
||||
new ItemStack[]{SlimefunItems.GOLD_8K, new ItemStack(Material.HONEY_BLOCK), SlimefunItems.GOLD_8K, new ItemStack(Material.HONEYCOMB_BLOCK), null, new ItemStack(Material.HONEYCOMB_BLOCK), null, null, null})
|
||||
.register(plugin);
|
||||
|
||||
new SlimefunItem(categories.magicalArmor, SlimefunItems.BEE_WINGS, RecipeType.ARMOR_FORGE,
|
||||
new ItemStack[]{SlimefunItems.GOLD_8K, null, SlimefunItems.GOLD_8K, new ItemStack(Material.HONEYCOMB_BLOCK), new ItemStack(Material.ELYTRA), new ItemStack(Material.HONEYCOMB_BLOCK), new ItemStack(Material.HONEY_BLOCK), SlimefunItems.GOLD_8K, new ItemStack(Material.HONEY_BLOCK)})
|
||||
.register(plugin);
|
||||
|
||||
new SlimefunItem(categories.magicalArmor, SlimefunItems.BEE_LEGGINGS, RecipeType.ARMOR_FORGE,
|
||||
new ItemStack[]{SlimefunItems.GOLD_8K, new ItemStack(Material.HONEY_BLOCK), SlimefunItems.GOLD_8K, new ItemStack(Material.HONEYCOMB_BLOCK), null, new ItemStack(Material.HONEYCOMB_BLOCK), new ItemStack(Material.HONEYCOMB_BLOCK), null, new ItemStack(Material.HONEYCOMB_BLOCK)})
|
||||
.register(plugin);
|
||||
|
||||
new SlimefunArmorPiece(categories.magicalArmor, SlimefunItems.BEE_BOOTS, RecipeType.ARMOR_FORGE,
|
||||
new ItemStack[]{null, null, null, SlimefunItems.GOLD_8K, null, SlimefunItems.GOLD_8K, new ItemStack(Material.HONEY_BLOCK), null, new ItemStack(Material.HONEY_BLOCK)},
|
||||
new PotionEffect[]{new PotionEffect(PotionEffectType.JUMP, 300, 2)})
|
||||
.register(plugin);
|
||||
}
|
||||
|
||||
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_16)) {
|
||||
new StrangeNetherGoo(categories.magicalResources, SlimefunItems.STRANGE_NETHER_GOO, RecipeType.BARTER_DROP,
|
||||
new ItemStack[] {null, null, null, null, new CustomItem(HeadTexture.PIGLIN_HEAD.getAsItemStack(), "&fPiglin"), null, null, null, null})
|
||||
|
@ -245,3 +245,4 @@ slimefun:
|
||||
iron_golem_assembler: Automated Iron Golems
|
||||
villager_rune: Reset Villager Trades
|
||||
elytra_cap: Crash Gear
|
||||
bee_armor: Bee Armor
|
||||
|
Loading…
Reference in New Issue
Block a user