Hbm-s-Nuclear-Tech-GIT/src/main/java/com/hbm/crafting/handlers/CargoShellCraftingHandler.java
2022-10-16 18:13:56 +02:00

82 lines
1.9 KiB
Java

package com.hbm.crafting.handlers;
import com.hbm.items.ModItems;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
public class CargoShellCraftingHandler implements IRecipe {
@Override
public boolean matches(InventoryCrafting inventory, World world) {
int itemCount = 0;
int shellCount = 0;
for(int i = 0; i < 9; i++) {
ItemStack stack = inventory.getStackInRowAndColumn(i % 3, i / 3);
if(stack != null) {
if(stack.getItem().hasContainerItem(stack) || !stack.getItem().doesContainerItemLeaveCraftingGrid(stack))
return false;
itemCount++;
if(stack.getItem() == ModItems.ammo_arty && stack.getItemDamage() == 8 && !stack.hasTagCompound()) {
shellCount++;
}
}
}
return itemCount == 2 && shellCount == 1;
}
@Override
public ItemStack getCraftingResult(InventoryCrafting inventory) {
ItemStack shell = null;
ItemStack cargo = null;
for(int i = 0; i < 9; i++) {
ItemStack stack = inventory.getStackInRowAndColumn(i % 3, i / 3);
if(stack == null)
continue;
if(stack.getItem() == ModItems.ammo_arty && stack.getItemDamage() == 8 && !stack.hasTagCompound()) {
ItemStack copy = stack.copy();
copy.stackSize = 1;
shell = copy;
} else {
ItemStack copy = stack.copy();
copy.stackSize = 1;
cargo = copy;
}
}
if(shell == null || cargo == null)
return null;
if(!shell.hasTagCompound())
shell.stackTagCompound = new NBTTagCompound();
shell.stackTagCompound.setTag("cargo", cargo.writeToNBT(new NBTTagCompound()));
return shell;
}
@Override
public int getRecipeSize() {
return 9;
}
@Override
public ItemStack getRecipeOutput() {
return new ItemStack(ModItems.ammo_shell, 1, 8);
}
}