- 116
- 0
j + i * 3 я вообще запутался, на что это заменить?
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Попробуй добавить в TileEntity:Alex090909 написал(а):но дело в том, что когда я ложу предмет в контейнер, то он исчезает при перезахде
public Packet getDescriptionPacket() {
NBTTagCompound nbt = new NBTTagCompound();
writeToNBT(nbt);
return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 0, nbt);
}
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) {
readFromNBT(packet.func_148857_g());
}
Возможно у тебя размеры gui окна указаны не верно, либо меняй координаты этого слота.Alex090909 написал(а):и слот отображается не по середине, а слева сверху
Alex090909, у тебя ещё блоке отсутствует "implements ITileEntityProvider", т.е. у тебя даже окно не должно открыться, потому-что блок без TileEntity.Alex090909 написал(а):сделал так, первый открывается, а второй нет:
package assets.armorness.src.tileentity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
public class TileEntityObsidianForge extends TileEntity implements IInventory{
private final ItemStack[] itemStacks;
public TileEntityObsidianForge() {
itemStacks = new ItemStack[1];
}
@Override
public int getSizeInventory() {
return 1;
}
@Override
public ItemStack getStackInSlot(int p_70301_1_) {
return itemStacks[p_70301_1_];
}
@Override
public ItemStack decrStackSize(int p_70298_1_, int p_70298_2_) {
ItemStack stack = this.getStackInSlot(p_70298_1_);
if (stack != null) {
if (stack.stackSize <= p_70298_2_) {
setInventorySlotContents(p_70298_1_, (ItemStack) null);
} else {
stack = stack.splitStack(p_70298_2_);
if (stack.stackSize == 0) {
setInventorySlotContents(p_70298_1_, (ItemStack) null);
}
}
}
markDirty();
return stack;
}
@Override
public ItemStack getStackInSlotOnClosing(int p_70304_1_) {
if (itemStacks[p_70304_1_] != null) {
ItemStack itemstack = itemStacks[p_70304_1_];
itemStacks[p_70304_1_] = null;
return itemstack;
} else {
return null;
}
}
@Override
public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) {
itemStacks[p_70299_1_] = p_70299_2_;
if (p_70299_2_ != null && p_70299_2_.stackSize > this.getInventoryStackLimit()) {
p_70299_2_.stackSize = getInventoryStackLimit();
}
markDirty();
}
@Override
public String getInventoryName() {
return "Obsidian Forge";
}
@Override
public boolean hasCustomInventoryName() {
return false;
}
@Override
public int getInventoryStackLimit() {
return 64;
}
@Override
public void markDirty() {
}
@Override
public boolean isUseableByPlayer(EntityPlayer p_70300_1_) {
return !p_70300_1_.isDead;
}
@Override
public void openInventory() {
}
@Override
public void closeInventory() {
}
@Override
public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
return false;
}
public Packet getDescriptionPacket(){
S35PacketUpdateTileEntity packet = (S35PacketUpdateTileEntity)super.getDescriptionPacket();
NBTTagCompound dataTag = packet != null ? packet.func_148857_g() : new NBTTagCompound();
writeToNBT(dataTag);
return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 1, dataTag);
}
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet){
super.onDataPacket(net, packet);
NBTTagCompound tag = packet != null ? packet.func_148857_g() : new NBTTagCompound();
readFromNBT(tag);
}
}