Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import xyz.holocons.mc.holoitemsrevamp.enchantment.Magnet;
import xyz.holocons.mc.holoitemsrevamp.enchantment.Memento;
import xyz.holocons.mc.holoitemsrevamp.enchantment.TideRider;
import xyz.holocons.mc.holoitemsrevamp.enchantment.Timefall;
import xyz.holocons.mc.holoitemsrevamp.integration.Integrations;

import java.lang.reflect.Field;
Expand Down Expand Up @@ -111,6 +112,7 @@ private static Set<CustomEnchantment> buildCustomEnchantments(HoloItemsRevamp pl
new Magnet(plugin),
new Memento(plugin),
new TideRider(plugin),
new Timefall(plugin),
new Backdash(plugin));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import xyz.holocons.mc.holoitemsrevamp.item.MagnetBook;
import xyz.holocons.mc.holoitemsrevamp.item.MementoItem;
import xyz.holocons.mc.holoitemsrevamp.item.TideRiderItem;
import xyz.holocons.mc.holoitemsrevamp.item.TimefallItem;

public class CollectionManager {

Expand Down Expand Up @@ -572,7 +573,7 @@ public List<Component> getLore() {
}

private static Idol buildKronii(HoloItemsRevamp plguin) {
return new Idol() {
return new Idol(new TimefallItem(plguin)) {

@Override
public @NotNull String getSkinBase64() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package xyz.holocons.mc.holoitemsrevamp.enchantment;

import com.destroystokyo.paper.MaterialSetTag;
import com.destroystokyo.paper.MaterialTags;
import com.strangeone101.holoitemsapi.enchantment.CustomEnchantment;
import com.strangeone101.holoitemsapi.enchantment.EnchantmentAbility;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import xyz.holocons.mc.holoitemsrevamp.HoloItemsRevamp;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class Timefall extends CustomEnchantment implements EnchantmentAbility {

private final HoloItemsRevamp plugin;

public Timefall(HoloItemsRevamp plugin) {
super(plugin, "timefall");
this.plugin = plugin;
}

@Override
public int getMaxLevel() {
return 1;
}

@Override
public boolean conflictsWith(@NotNull Enchantment other) {
return false;
}

@Override
public boolean canEnchantItem(@NotNull ItemStack item) {
return item.getType() == Material.POWDER_SNOW_BUCKET;
}

@Override
public @NotNull Component displayName(int level) {
return Component.text("Timefall", NamedTextColor.GOLD)
.decoration(TextDecoration.ITALIC, false);
}

@Override
public int getCostMultiplier() {
return Integer.MAX_VALUE;
}

@Override
public void onPlayerInteract(PlayerInteractEvent event, ItemStack itemStack) {

// If not right-clicked or a container, return
if(!event.getAction().isRightClick() || event.getAction() != Action.RIGHT_CLICK_BLOCK){
return;
}

// If the block right-clicked is an interactable block, return
if(event.getClickedBlock().getBlockData().getMaterial().isInteractable()){
return;
}

ItemStack item = event.getItem();
item.setType(Material.BUCKET);
item.setItemMeta(new ItemStack(Material.BUCKET).getItemMeta());
Comment thread
SpaceNerden marked this conversation as resolved.
Outdated

Player player = event.getPlayer();
player.setFreezeTicks(60);
Location center = player.getLocation();
player.getWorld().spawnParticle(Particle.WHITE_ASH, center, 200, 5, 5, 5);

int ticks = 25;
boolean consumeItem = false;

for (int x=-5; x<=5; x++) {
for (int y=-5; y<=5; y++) {
for(int z=-5; z<=5; z++) {
Block block = center.clone().add(x, y, z).getBlock();
if(block.getBlockData().isRandomlyTicked())
{
for (int i = 0; i < ticks; i++) {
block.randomTick();
}
consumeItem = true;
}
}
}
}



// Deletes item if it was used.
if(consumeItem){
event.getItem().subtract(1);
}
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package xyz.holocons.mc.holoitemsrevamp.item;

import com.strangeone101.holoitemsapi.enchantment.EnchantManager;
import com.strangeone101.holoitemsapi.enchantment.Enchantable;
import com.strangeone101.holoitemsapi.item.CustomItem;
import com.strangeone101.holoitemsapi.recipe.RecipeManager;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;
import org.bukkit.inventory.ShapedRecipe;
import org.jetbrains.annotations.NotNull;
import xyz.holocons.mc.holoitemsrevamp.HoloItemsRevamp;

import java.util.List;

public class TimefallItem extends CustomItem implements Enchantable {

private final static String name = "timefall";
private final static Material material = Material.POWDER_SNOW_BUCKET;
private final static Component displayName = Component.text("Timefall", NamedTextColor.BLUE);

private final static List<Component> lore = List.of(
Component.text("Accelerate oxidation")
);

private final EnchantManager enchantManager;

public TimefallItem(HoloItemsRevamp plugin) {
super(plugin, name, material, displayName, lore);
this.enchantManager = plugin.getEnchantManager();
this.setStackable(false);
this.register();
}

@Override
protected Recipe getRecipe() {
final var recipe = new ShapedRecipe(getKey(), buildStack(null));
recipe.shape(
"ABA",
"BCB",
"ABA"
);
recipe.setIngredient('A', Material.SNOW);
recipe.setIngredient('B', Material.BONE_BLOCK);
recipe.setIngredient('C', Material.BUCKET);
return recipe;
}

@Override
public @NotNull Enchantment getEnchantment() {
return Enchantment.getByKey(getKey());
}

@Override
public ItemStack applyEnchantment(ItemStack itemStack) {
var enchantedStack = itemStack.clone();
var enchantedMeta = enchantedStack.hasItemMeta() ? enchantedStack.getItemMeta() : Bukkit.getItemFactory().getItemMeta(enchantedStack.getType());

if (enchantedMeta.addEnchant(getEnchantment(), 1, false)) {
enchantedStack.setItemMeta(enchantedMeta);
enchantManager.removeCustomEnchantmentLore(enchantedStack);
enchantManager.applyCustomEnchantmentLore(enchantedStack);
return enchantedStack;
} else {
return null;
}
}
}