2019-11-04 19:08:49 +01:00
|
|
|
package de.ellpeck.naturesaura.items;
|
|
|
|
|
|
|
|
import de.ellpeck.naturesaura.api.NaturesAuraAPI;
|
|
|
|
import de.ellpeck.naturesaura.entities.EntityEffectInhibitor;
|
|
|
|
import de.ellpeck.naturesaura.reg.IColorProvidingItem;
|
2023-07-25 14:04:48 +02:00
|
|
|
import de.ellpeck.naturesaura.reg.ICustomCreativeTab;
|
2021-12-06 14:38:12 +01:00
|
|
|
import net.minecraft.client.color.item.ItemColor;
|
|
|
|
import net.minecraft.network.chat.Component;
|
|
|
|
import net.minecraft.resources.ResourceLocation;
|
|
|
|
import net.minecraft.world.InteractionResult;
|
|
|
|
import net.minecraft.world.item.ItemStack;
|
|
|
|
import net.minecraft.world.item.context.UseOnContext;
|
2019-11-04 19:08:49 +01:00
|
|
|
import net.minecraftforge.api.distmarker.Dist;
|
|
|
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
|
|
|
|
2023-07-25 14:04:48 +02:00
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
public class ItemEffectPowder extends ItemImpl implements IColorProvidingItem, ICustomCreativeTab {
|
2019-11-04 19:08:49 +01:00
|
|
|
|
2020-01-26 01:41:49 +01:00
|
|
|
public ItemEffectPowder() {
|
2020-02-07 23:50:16 +01:00
|
|
|
super("effect_powder");
|
2019-11-04 19:08:49 +01:00
|
|
|
}
|
|
|
|
|
2020-02-07 15:22:30 +01:00
|
|
|
public static ResourceLocation getEffect(ItemStack stack) {
|
|
|
|
if (!stack.hasTag())
|
|
|
|
return null;
|
2021-12-15 16:30:22 +01:00
|
|
|
var effect = stack.getTag().getString("effect");
|
2020-02-07 15:22:30 +01:00
|
|
|
if (effect.isEmpty())
|
|
|
|
return null;
|
|
|
|
return new ResourceLocation(effect);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static ItemStack setEffect(ItemStack stack, ResourceLocation effect) {
|
2021-01-11 22:50:11 +01:00
|
|
|
stack.getOrCreateTag().putString("effect", effect != null ? effect.toString() : "");
|
2020-02-07 15:22:30 +01:00
|
|
|
return stack;
|
|
|
|
}
|
|
|
|
|
2019-11-04 19:08:49 +01:00
|
|
|
@Override
|
2021-12-06 14:38:12 +01:00
|
|
|
public InteractionResult useOn(UseOnContext context) {
|
2021-12-15 16:30:22 +01:00
|
|
|
var level = context.getLevel();
|
2021-12-04 15:40:09 +01:00
|
|
|
if (!level.isClientSide) {
|
2021-12-15 16:30:22 +01:00
|
|
|
var hit = context.getClickLocation();
|
|
|
|
var stack = context.getPlayer().getItemInHand(context.getHand());
|
2021-12-04 15:40:09 +01:00
|
|
|
EntityEffectInhibitor.place(level, stack, hit.x, hit.y + 1, hit.z);
|
2019-11-04 19:08:49 +01:00
|
|
|
stack.setCount(0);
|
|
|
|
}
|
2021-12-04 15:40:09 +01:00
|
|
|
return InteractionResult.SUCCESS;
|
2019-11-04 19:08:49 +01:00
|
|
|
}
|
|
|
|
|
2023-07-25 14:04:48 +02:00
|
|
|
@Override
|
|
|
|
public List<ItemStack> getCreativeTabItems() {
|
|
|
|
return NaturesAuraAPI.EFFECT_POWDERS.keySet().stream().map(e -> ItemEffectPowder.setEffect(new ItemStack(this), e)).toList();
|
|
|
|
}
|
2019-11-04 19:08:49 +01:00
|
|
|
|
|
|
|
@Override
|
2021-12-06 14:38:12 +01:00
|
|
|
public Component getName(ItemStack stack) {
|
2022-06-27 15:24:04 +02:00
|
|
|
return Component.translatable(this.getDescriptionId(stack) + "." + ItemEffectPowder.getEffect(stack));
|
2019-11-04 19:08:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@OnlyIn(Dist.CLIENT)
|
2021-12-06 14:38:12 +01:00
|
|
|
public ItemColor getItemColor() {
|
2022-06-27 15:24:04 +02:00
|
|
|
return (stack, tintIndex) -> NaturesAuraAPI.EFFECT_POWDERS.getOrDefault(ItemEffectPowder.getEffect(stack), 0xFFFFFF);
|
2019-11-04 19:08:49 +01:00
|
|
|
}
|
2023-07-25 14:04:48 +02:00
|
|
|
|
2019-11-04 19:08:49 +01:00
|
|
|
}
|