Jump to content

[1.10] Problems with item removal


Egietje

Recommended Posts

I want to only take 1 cheese from 1 stack, but it takes 1 cheese from every stack of cheese, here's my code:

package com.Egietje.degeweldigemod.init;

import java.util.Random;

import javax.annotation.Nullable;

import net.minecraft.block.Block;
import net.minecraft.block.BlockChest;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.StatList;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.world.ILockableContainer;
import net.minecraft.world.World;

public class ComplimentsMachine extends Block {
public Random random = new Random();

public ComplimentsMachine(Material materialIn) {
	super(materialIn);
}

public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, @Nullable ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
	int compliment = random.nextInt(2);
	Item holdingItem = playerIn.getHeldItemMainhand() != null ? playerIn.getHeldItemMainhand().getItem() : null;
	if (worldIn.isRemote) {
		return true;
	} else {
		if (compliment == 0 && holdingItem == CheeseItems.cheese) {
			playerIn.addChatMessage(new TextComponentString("§e" + playerIn.getDisplayNameString() + "§r§6 is AWESOME.§r"));
			removeItem(playerIn, heldItem);
		} else {
			if (compliment == 1 && holdingItem == CheeseItems.cheese) {
				playerIn.addChatMessage(new TextComponentString("§6I love§r §e" + playerIn.getDisplayNameString() + "§r§6.§r"));
				removeItem(playerIn, heldItem);
			} else {
				return true;
			}
		}
		return true;
	}
}

public void removeItem(EntityPlayer playerIn, ItemStack removeitem) {
	IInventory inv = playerIn.inventory;
	for(int i = 0; i < inv.getSizeInventory(); i++) {
		if(inv.getStackInSlot(i) != null) {
			ItemStack j = inv.getStackInSlot(i);
			if(j.getItem() != null && j.getItem() == removeitem.getItem()) {
				inv.decrStackSize(i, 1);
			}
		}
	}
}
}

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.