Jump to content

[1.7.x] Can't take items out of slots.


SwordsMiner

Recommended Posts

Hey guys, I generally dislike coming here to forums, but I have been struggling to get this to work for hours.

 

My problem is I want to make it so I cannot take out of the 2nd slot (number 1 in the index)

 

BlockExtractinator: (the block)

 

public boolean onBlockActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
{
	 if (par1World.isRemote){
         return true;
     } else {
         TileEntityExtractinator entity = (TileEntityExtractinator)par1World.getTileEntity(x, y, z);
        if (entity != null){
        	par5EntityPlayer.openGui(Main.instance, Main.instance.guiIdExtractinator, par1World, x, y, z);
        }
         return true;
     }
}

 @Override
     public void breakBlock(World world, int x, int y, int z, Block par5, int par6) {
             dropItems(world, x, y, z);
             super.breakBlock(world, x, y, z, par5, par6);
     }

     private void dropItems(World world, int x, int y, int z){
             Random rand = new Random();

             TileEntity tileEntity = world.getTileEntity(x, y, z);
             if (!(tileEntity instanceof IInventory)) {
                     return;
             }
             IInventory inventory = (IInventory) tileEntity;

             for (int i = 0; i < inventory.getSizeInventory(); i++) {
                     ItemStack item = inventory.getStackInSlot(i);

                     if (item != null && item.stackSize > 0) {
                             float rx = rand.nextFloat() * 0.8F + 0.1F;
                             float ry = rand.nextFloat() * 0.8F + 0.1F;
                             float rz = rand.nextFloat() * 0.8F + 0.1F;

                             EntityItem entityItem = new EntityItem(world,
                                             x + rx, y + ry, z + rz,
                                             new ItemStack(item.getItem(), item.stackSize, item.getItemDamage()));

                             if (item.hasTagCompound()) {
                                     entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy());
                             }

                             float factor = 0.05F;
                             entityItem.motionX = rand.nextGaussian() * factor;
                             entityItem.motionY = rand.nextGaussian() * factor + 0.2F;
                             entityItem.motionZ = rand.nextGaussian() * factor;
                             world.spawnEntityInWorld(entityItem);
                             item.stackSize = 0;
                     }
             }
     }

@Override
public void onBlockExploded(World world, int x, int y, int z, Explosion explosion) {

}

@Override
public TileEntity createNewTileEntity(World var1, int var2) {
	return new TileEntityExtractinator();
}

 

GUI

 

private TileEntityExtractinator extractinator;

public static final ResourceLocation texture = new ResourceLocation(Main.MODID.toLowerCase(), "textures/gui/extractinator.png");

public GuiExtractinator(InventoryPlayer inventoryPlayer, TileEntityExtractinator entity) {
	super(new ContainerExtractinator(inventoryPlayer, entity));

	this.extractinator = entity;

	this.xSize = 176;
	this.ySize = 166;
}

@Override
protected void drawGuiContainerBackgroundLayer(float var1, int var2,
		int var3) {
	GL11.glColor4f(1F, 1F, 1F, 1F);

	Minecraft.getMinecraft().getTextureManager().bindTexture(texture);

	drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
}

@Override
protected void drawGuiContainerForegroundLayer(int var1, int var2) {
	String name = "Extractinator";
	this.fontRendererObj.drawString(name, this.xSize/2 - this.fontRendererObj.getStringWidth(name) /2, 6, 4210752);
	this.fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory").trim(), 8, this.ySize - 96, 4210752);

}

 

TileEntityExtractinator

 

package com.revereor.tileentity;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;

public class TileEntityExtractinator extends TileEntity implements ISidedInventory{

private ItemStack[] slots = new ItemStack[2];

private int extractTime;

private static final int[] slots_top = new int[]{0};
private static final int[] slots_bottom = new int[]{1};
private static final int[] slots_sides = new int[]{};

public int getSizeInventory(){
	return this.slots.length;
}

@Override
public ItemStack getStackInSlot(int var1) {
	return slots[var1];
}

@Override
public ItemStack decrStackSize(int var1, int var2) {
	// TODO Auto-generated method stub
	return null;
}

@Override
public ItemStack getStackInSlotOnClosing(int var1) {
	// TODO Auto-generated method stub
	return null;
}

@Override
public void setInventorySlotContents(int var1, ItemStack var2) {
	slots[var1] = var2;
}

@Override
public String getInventoryName() {
	return "Extractinator";
}

@Override
public boolean hasCustomInventoryName() {
	return true;
}

@Override
public int getInventoryStackLimit() {
	return 64;
}

@Override
public boolean isUseableByPlayer(EntityPlayer var1) {
	// TODO Auto-generated method stub
	return false;
}

@Override
public void openInventory() {
	// TODO Auto-generated method stub

}

@Override
public void closeInventory() {
	// TODO Auto-generated method stub

}

public void updateEntity(){
	if(slots[0] != null){

	} else {
		extractTime = 0;
	}
}

@Override
public boolean isItemValidForSlot(int var1, ItemStack var2) {
	return var1 != 1;
}

@Override
public int[] getAccessibleSlotsFromSide(int var1) {
	return var1 == 0 ? slots_bottom : (var1 == 1 ? slots_top : slots_sides);
}

@Override
public boolean canInsertItem(int var1, ItemStack var2, int var3) {
	return this.isItemValidForSlot(var1, var2);
}

@Override
public boolean canExtractItem(int var1, ItemStack var2, int var3) {
	return var3 != 0 || var1 != 1;
}
}

 

Container

 

package com.revereor.container;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;

import com.revereor.tileentity.TileEntityExtractinator;

public class ContainerExtractinator extends Container {

private TileEntityExtractinator extractinator;

public ContainerExtractinator(InventoryPlayer inventory,
		TileEntityExtractinator entity) {
	this.extractinator = entity;

	this.addSlotToContainer(new Slot(entity, 0, 52,35));
	this.addSlotToContainer(new Slot(entity, 1, 116,35));

	for(int i = 0; i < 3; i++){
		for(int j = 0; j < 9; j++){
			this.addSlotToContainer(new Slot(inventory, j + i*9 + 9, j*18+8, i*18+84));
		}
	}
	for(int i = 0; i < 9; i++){
		for(int j = 0; j < 1; j++){
			this.addSlotToContainer(new Slot(inventory, i, 8+i*18, 142));
		}
	}
}

@Override
public boolean canInteractWith(EntityPlayer var1) {
	return true;
}

}

 

Sorry if thats a lot!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • AGENSLOT77 dikenal sebagai salah satu situs judi slot gacor terpercaya. Istilah "gacor" merujuk pada mesin slot yang sering memberikan kemenangan kepada pemainnya. Dengan koleksi permainan slot yang beragam dan canggih, AGENSLOT77 memberikan kesempatan besar bagi para pemain untuk meraih kemenangan yang menggiurkan. 2. Slot88 Terpercaya Slot88 merupakan salah satu permainan slot paling populer di AGENSLOT77. Dengan desain yang menawan dan pembayaran yang besar, Slot88 menjadi favorit di antara pemain judi online. Malam ini, para pemain dapat menikmati berbagai permainan Slot88 yang menarik dan menguntungkan di AGENSLOT77. 3. Peluang Maxwin Malam Ini AGENSLOT77 menawarkan peluang Maxwin yang menarik, terutama malam ini. Dengan fitur yang mudah dimengerti dan diakses, pemain memiliki kesempatan besar untuk meraih kemenangan maksimum dalam setiap permainan yang mereka mainkan. Jadi, jangan lewatkan kesempatan untuk memenangkan hadiah besar di AGENSLOT77 malam ini!   ❱❱❱❱❱ DAFTAR DI SINI ❰❰❰❰❰  
    • Javatogel: Agen BO Terpercaya, Anti Sedot WC, 100% Real, Gampang Menang Dalam dunia perjudian online, menemukan agen yang dapat dipercaya adalah langkah penting untuk pen galaman berjudi yang aman dan menguntungkan. Salah satu agen yang mendapat kepercayaan tinggi dari para pemain adalah Javatogel. Mari kita telusuri lebih dalam mengenai apa yang membuat Javatogel menjadi pilihan utama bagi para pecinta togel. Javatogel: Agen BO Terpercaya                                   DAFTAR SEKARANG AKUN VIP MAXWIN
    • S1288POKER Rasakan sensasi bertaruh Mix Parlay yang tak terlupakan dengan bonus fantastis di situs judi terpercaya kami! Kami menawarkan bonus Mix Parlay terbesar di Asia dengan berbagai pilihan taruhan dan minimal deposit rendah. Dapatkan bonus hingga jutaan rupiah untuk taruhan Mix Parlay Anda dan nikmati keuntungan berlipat ganda.
    • Situs Akun Pro Peru adalah pilihan terbaik bagi Anda yang mencari situs terpercaya untuk bermain slot dan taruhan bola. Berikut adalah beberapa alasan mengapa Anda harus memilih Situs Akun Pro Peru: Slot Populer Kami menyajikan koleksi slot yang populer dan menarik dengan berbagai tema yang beragam. Dari slot klasik hingga slot video modern, setiap pemain dapat menemukan permainan favorit mereka dengan mudah. Taruhan Bola Terpercaya Selain slot, kami juga menyediakan taruhan bola dengan pasaran terlengkap dan odds yang kompetitif. Dengan berbagai pertandingan dan liga yang tersedia, Anda dapat menikmati pengalaman taruhan bola yang seru dan menguntungkan. Transaksi Mudah dengan Bank BTN Kami menyediakan layanan transaksi yang mudah dan aman melalui Bank BTN. Dengan dukungan dari sistem pembayaran yang terpercaya, Anda dapat melakukan deposit dan penarikan dana dengan cepat dan tanpa hambatan.  
    • Ngamenslot adalah pilihan terbaik bagi Anda yang mencari situs terpercaya untuk bermain slot dan taruhan bola. Berikut adalah beberapa alasan mengapa Anda harus memilih Ngamenslot: Kombinasi Slot & Bola Kami menyajikan kombinasi terbaik antara permainan slot yang seru dan taruhan bola yang menegangkan. Dengan pilihan permainan yang beragam, setiap pemain dapat menikmati pengalaman bermain yang unik dan menyenangkan. Transaksi Mudah melalui Bank Ekonomi Kami menyediakan layanan transaksi yang mudah dan aman melalui Bank Ekonomi. Dengan dukungan dari sistem pembayaran yang terpercaya, Anda dapat melakukan deposit dan penarikan dana dengan cepat dan tanpa hambatan. Terpercaya dan Terjamin Ngamenslot telah terbukti sebagai situs terpercaya dengan ribuan pemain yang puas. Kami mengutamakan keamanan dan kenyamanan para pemain, sehingga Anda dapat bermain dengan tenang dan fokus pada permainan.  
  • Topics

×
×
  • Create New...

Important Information

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