2020-09-09 16:48:43 +02:00
|
|
|
package de.ellpeck.actuallyadditions.common.util;
|
2015-03-29 15:29:05 +02:00
|
|
|
|
2015-09-23 21:34:12 +02:00
|
|
|
import net.minecraft.enchantment.Enchantment;
|
2020-10-31 22:31:04 +01:00
|
|
|
import net.minecraft.enchantment.EnchantmentHelper;
|
|
|
|
import net.minecraft.entity.player.PlayerEntity;
|
2015-03-29 15:29:05 +02:00
|
|
|
import net.minecraft.item.Item;
|
2015-09-22 23:32:19 +02:00
|
|
|
import net.minecraft.item.ItemStack;
|
2020-10-31 22:31:04 +01:00
|
|
|
import net.minecraft.util.Hand;
|
2016-01-07 23:42:42 +01:00
|
|
|
import net.minecraft.util.ResourceLocation;
|
2020-10-31 22:31:04 +01:00
|
|
|
import net.minecraftforge.registries.ForgeRegistries;
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
2015-04-04 05:20:19 +02:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public final class ItemUtil {
|
2015-03-29 15:29:05 +02:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public static Item getItemFromName(String name) {
|
2017-11-02 22:49:53 +01:00
|
|
|
return ForgeRegistries.ITEMS.getValue(new ResourceLocation(name));
|
2015-07-12 22:05:34 +02:00
|
|
|
}
|
|
|
|
|
2020-10-31 22:31:04 +01:00
|
|
|
// @Deprecated // canitzp: should be removed
|
|
|
|
// public static void registerBlock(Block block, BlockAtomicReconstructor.BlockItem itemBlock, String name, boolean addTab) {
|
|
|
|
// block.setTranslationKey(ActuallyAdditions.MODID + "." + name);
|
|
|
|
//
|
|
|
|
// block.setRegistryName(ActuallyAdditions.MODID, name);
|
|
|
|
// RegistryHandler.BLOCKS_TO_REGISTER.add(block);
|
|
|
|
//
|
|
|
|
// itemBlock.setRegistryName(block.getRegistryName());
|
|
|
|
// RegistryHandler.ITEMS_TO_REGISTER.add(itemBlock);
|
|
|
|
//
|
|
|
|
// block.setCreativeTab(addTab ? CreativeTab.INSTANCE : null);
|
|
|
|
//
|
|
|
|
// IMCHandler.doBlockIMC(block);
|
|
|
|
//
|
|
|
|
// if (block instanceof IColorProvidingBlock) {
|
|
|
|
// ActuallyAdditions.PROXY.addColoredBlock(block);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
// @Deprecated // canitzp: should be removed
|
|
|
|
// public static void registerItem(Item item, String name, boolean addTab) {
|
|
|
|
// item.setTranslationKey(ActuallyAdditions.MODID + "." + name);
|
|
|
|
//
|
|
|
|
// item.setRegistryName(ActuallyAdditions.MODID, name);
|
|
|
|
// RegistryHandler.ITEMS_TO_REGISTER.add(item);
|
|
|
|
//
|
|
|
|
// item.setCreativeTab(addTab ? CreativeTab.INSTANCE : null);
|
|
|
|
//
|
|
|
|
// IMCHandler.doItemIMC(item);
|
|
|
|
//
|
|
|
|
// if (item instanceof IColorProvidingItem) {
|
|
|
|
// ActuallyAdditions.PROXY.addColoredItem(item);
|
|
|
|
// }
|
|
|
|
// }
|
2016-03-18 18:38:39 +01:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public static boolean contains(ItemStack[] array, ItemStack stack, boolean checkWildcard) {
|
2015-09-28 23:39:34 +02:00
|
|
|
return getPlaceAt(array, stack, checkWildcard) != -1;
|
2015-09-22 23:48:27 +02:00
|
|
|
}
|
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public static int getPlaceAt(ItemStack[] array, ItemStack stack, boolean checkWildcard) {
|
2016-08-03 04:01:47 +02:00
|
|
|
return getPlaceAt(Arrays.asList(array), stack, checkWildcard);
|
|
|
|
}
|
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public static int getPlaceAt(List<ItemStack> list, ItemStack stack, boolean checkWildcard) {
|
|
|
|
if (list != null && list.size() > 0) {
|
|
|
|
for (int i = 0; i < list.size(); i++) {
|
|
|
|
if (!StackUtil.isValid(stack) && !StackUtil.isValid(list.get(i)) || areItemsEqual(stack, list.get(i), checkWildcard)) { return i; }
|
2015-09-22 23:32:19 +02:00
|
|
|
}
|
|
|
|
}
|
2015-09-22 23:48:27 +02:00
|
|
|
return -1;
|
2015-09-22 23:32:19 +02:00
|
|
|
}
|
2015-09-23 18:36:53 +02:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public static boolean areItemsEqual(ItemStack stack1, ItemStack stack2, boolean checkWildcard) {
|
2020-10-31 22:31:04 +01:00
|
|
|
// todo: fix wildcard
|
|
|
|
return StackUtil.isValid(stack1) && StackUtil.isValid(stack2) && (stack1.isItemEqual(stack2) || checkWildcard && stack1.getItem() == stack2.getItem() && (stack1.getDamage() == Util.WILDCARD || stack2.getDamage() == Util.WILDCARD));
|
2015-09-23 18:36:53 +02:00
|
|
|
}
|
2015-09-23 21:34:12 +02:00
|
|
|
|
2015-10-03 22:13:57 +02:00
|
|
|
/**
|
|
|
|
* Returns true if list contains stack or if both contain null
|
|
|
|
*/
|
2019-05-02 09:10:29 +02:00
|
|
|
public static boolean contains(List<ItemStack> list, ItemStack stack, boolean checkWildcard) {
|
2016-08-03 04:01:47 +02:00
|
|
|
return !(list == null || list.isEmpty()) && getPlaceAt(list, stack, checkWildcard) != -1;
|
2015-10-03 22:13:57 +02:00
|
|
|
}
|
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public static void addEnchantment(ItemStack stack, Enchantment e, int level) {
|
|
|
|
if (!hasEnchantment(stack, e)) {
|
2015-09-24 21:00:53 +02:00
|
|
|
stack.addEnchantment(e, level);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public static boolean hasEnchantment(ItemStack stack, Enchantment e) {
|
2020-10-31 22:31:04 +01:00
|
|
|
return EnchantmentHelper.getEnchantments(stack).containsKey(e);
|
2015-09-23 21:34:12 +02:00
|
|
|
}
|
2015-09-24 20:53:07 +02:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public static void removeEnchantment(ItemStack stack, Enchantment e) {
|
2020-10-31 22:31:04 +01:00
|
|
|
Map<Enchantment, Integer> enchantments = EnchantmentHelper.getEnchantments(stack);
|
|
|
|
enchantments.remove(e);
|
|
|
|
|
|
|
|
EnchantmentHelper.setEnchantments(enchantments, stack);
|
2015-09-24 20:53:07 +02:00
|
|
|
}
|
2016-08-02 16:32:13 +02:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public static boolean canBeStacked(ItemStack stack1, ItemStack stack2) {
|
2016-08-02 16:32:13 +02:00
|
|
|
return ItemStack.areItemsEqual(stack1, stack2) && ItemStack.areItemStackTagsEqual(stack1, stack2);
|
|
|
|
}
|
2016-11-27 11:56:22 +01:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public static boolean isEnabled(ItemStack stack) {
|
2020-10-31 22:31:04 +01:00
|
|
|
return stack.getOrCreateTag().getBoolean("IsEnabled");
|
2016-11-27 11:56:22 +01:00
|
|
|
}
|
|
|
|
|
2020-10-31 22:31:04 +01:00
|
|
|
public static void changeEnabled(PlayerEntity player, Hand hand) {
|
2016-12-18 17:28:29 +01:00
|
|
|
changeEnabled(player.getHeldItem(hand));
|
|
|
|
}
|
2016-11-27 11:56:22 +01:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public static void changeEnabled(ItemStack stack) {
|
2016-11-27 11:56:22 +01:00
|
|
|
boolean isEnabled = isEnabled(stack);
|
2020-10-31 22:31:04 +01:00
|
|
|
stack.getOrCreateTag().putBoolean("IsEnabled", !isEnabled);
|
2016-11-27 11:56:22 +01:00
|
|
|
}
|
2015-03-29 15:29:05 +02:00
|
|
|
}
|