NaturesAura/src/main/java/de/ellpeck/naturesaura/items/ItemEffectPowder.java

72 lines
2.5 KiB
Java
Raw Normal View History

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;
2021-12-06 14:38:12 +01:00
import net.minecraft.client.color.item.ItemColor;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.CreativeModeTab;
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;
2020-01-26 01:41:49 +01:00
public class ItemEffectPowder extends ItemImpl implements IColorProvidingItem {
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) {
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-08 12:32:27 +02:00
// TODO effect powder creative tab
/* @Override
2021-12-06 14:38:12 +01:00
public void fillItemCategory(CreativeModeTab tab, NonNullList<ItemStack> items) {
2022-06-27 15:24:04 +02:00
if (this.allowedIn(tab)) {
2021-12-15 16:30:22 +01:00
for (var effect : NaturesAuraAPI.EFFECT_POWDERS.keySet()) {
var stack = new ItemStack(this);
2022-06-27 15:24:04 +02:00
ItemEffectPowder.setEffect(stack, effect);
2019-11-04 19:08:49 +01:00
items.add(stack);
}
}
2023-07-08 12:32:27 +02:00
}*/
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
}
}