Advertisement
HalestormXV

Pouch Item

Jan 31st, 2021
1,048
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.96 KB | None | 0 0
  1. package com.halestormxv.numinous.common.items;
  2.  
  3. import com.halestormxv.numinous.NuminousMod;
  4. import com.halestormxv.numinous.common.containers.MaterialPouchContainer;
  5. import net.minecraft.entity.player.PlayerEntity;
  6. import net.minecraft.inventory.container.SimpleNamedContainerProvider;
  7. import net.minecraft.item.DyeColor;
  8. import net.minecraft.item.Item;
  9. import net.minecraft.item.ItemGroup;
  10. import net.minecraft.item.ItemStack;
  11. import net.minecraft.network.PacketBuffer;
  12. import net.minecraft.util.ActionResult;
  13. import net.minecraft.util.ActionResultType;
  14. import net.minecraft.util.Hand;
  15. import net.minecraft.util.NonNullList;
  16. import net.minecraft.util.text.TranslationTextComponent;
  17. import net.minecraft.world.World;
  18. import net.minecraftforge.items.IItemHandler;
  19. import net.minecraftforge.items.ItemStackHandler;
  20.  
  21. public class MaterialPouch extends Item {
  22.  
  23.     private static final String NBT_COLOR = "PouchColor";
  24.  
  25.     public MaterialPouch(){
  26.         super(new Properties().group(NuminousMod.NuminousItemTab.instance).maxStackSize(1));
  27.     }
  28.  
  29.     public int getInventorySize(ItemStack stack){
  30.         return 27;
  31.     }
  32.  
  33.     public IItemHandler getInventory(ItemStack stack){
  34.         ItemStackHandler stackHandler = new ItemStackHandler(getInventorySize(stack));
  35.         stackHandler.deserializeNBT(stack.getOrCreateTag().getCompound("Inventory"));
  36.         return stackHandler;
  37.     }
  38.  
  39.     public void saveInventory(ItemStack stack, IItemHandler itemHandler){
  40.         if (itemHandler instanceof ItemStackHandler){
  41.             stack.getOrCreateTag().put("Inventory", ((ItemStackHandler)itemHandler).serializeNBT());
  42.         }
  43.     }
  44.     @Override
  45.     public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
  46.         if (!worldIn.isRemote()){
  47.             playerIn.openContainer(new SimpleNamedContainerProvider((windowId, playerInventory, player) ->
  48.                     new MaterialPouchContainer(windowId, playerInventory, null), new TranslationTextComponent("container.halestormxv_numinous.material_pouch")));
  49.         }
  50.  
  51.         return new ActionResult<>(ActionResultType.SUCCESS, playerIn.getHeldItem(handIn));
  52.     }
  53.  
  54.     public static int getPouchColor(ItemStack stack){
  55.         return stack.getOrCreateTag().getInt(NBT_COLOR);
  56.     }
  57.  
  58.     public static void setPouchColor(ItemStack stack, int color){
  59.         stack.getOrCreateTag().putInt(NBT_COLOR, color);
  60.     }
  61.  
  62.     public static int getItemColor(ItemStack stack, int tintIndex){
  63.         if (tintIndex ==0){
  64.             return getPouchColor(stack);
  65.         }
  66.         return 0XFFFFFF;
  67.     }
  68.  
  69.     @Override
  70.     public void fillItemGroup(ItemGroup group, NonNullList<ItemStack> items) {
  71.         if (isInGroup(group)){
  72.             for (DyeColor color : DyeColor.values()){
  73.                 ItemStack stack = new ItemStack(this);
  74.                 setPouchColor(stack, color.getFireworkColor());
  75.                 items.add(stack);
  76.             }
  77.         }
  78.     }
  79. }
  80.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement