Jump to content

Crafting Table Problem [Solved]


wookiederk

Recommended Posts

Hi, im making a custom workbench with tile entity. However, my container code is acting strange. I managed to get the blocks saving in the matrix, but the result is invisible although obtainable, and the result yields 1 less then what should be.  Please let me know what I am doing wrong  and how to fix it, and thanks for any help.

Edit: Fixed it myself. Make a custom slot and assign your own properties to it etc...

Relevant Container Code:

public InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3);
public IInventory craftResult = new InventoryCraftResult();
private World worldObj;
private int posX;
private int posY;
private int posZ;
private TileEntityCounter counter;

public ContainerCounter(InventoryPlayer par1InventoryPlayer,
		TileEntityCounter par2TileEntityCounter, World world, int x, int y,
		int z) {

	this.counter = par2TileEntityCounter;
	this.worldObj = world;
	this.posX = x;
	this.posY = y;
	this.posZ = z;

	this.addSlotToContainer(new SlotCrafting(par1InventoryPlayer.player,
			this.craftMatrix, this.craftResult, 0, 124, 35));

	int l;
	int i1;

	for (l = 0; l < 3; ++l) {
		for (i1 = 0; i1 < 3; ++i1) {

			this.addSlotToContainer(new Slot(par2TileEntityCounter, i1 + l
					* 3, 30 + i1 * 18, 17 + l * 18));
		}
	}

	for (l = 0; l < 3; ++l) {
		for (i1 = 0; i1 < 9; ++i1) {
			this.addSlotToContainer(new Slot(par1InventoryPlayer, i1 + l
					* 9 + 9, 8 + i1 * 18, 84 + l * 18));
		}
	}

	for (l = 0; l < 9; ++l) {
		this.addSlotToContainer(new Slot(par1InventoryPlayer, l,
				8 + l * 18, 142));
	}
}

/**
 * Callback for when the crafting matrix is changed.
 */
public void onCraftMatrixChanged(IInventory par1IInventory) {
	this.craftResult.setInventorySlotContents(
			0,
			CraftingManager.getInstance().findMatchingRecipe(
					this.craftMatrix, this.worldObj));
}

public void detectAndSendChanges() {
	super.detectAndSendChanges();
	for (int i = 0; i < 9; i++) {
		this.craftMatrix.setInventorySlotContents(i,
				this.counter.counterItemStacks[i]);
	}
	this.onCraftMatrixChanged(this.craftMatrix);
	this.counter.counterItemStacks[9] = this.craftResult.getStackInSlot(0);
} [/code

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.