jopi
Попрошайка
- 1,421
- 31
- 260
Проблема с фейк слотами в которых ItemStack'и
Итак. введу вас в курс дела, хоть проблема на 1.5.2 а я указал 1.7.10 версию мне нужен фикс на 1.7.10, на 1.5.2 я как-нибудь да переверну.
У меня есть фейк слоты(12) вот в таком гуи:
Вы видете слот с квадратиком и рядом с ним нагрудник, они нормальные, меня больше интересуют слоты ниже которых 12 штук
После их добавления в виде IInventory после того как я туда пихаю вещи с SHIFT вещь если не может лечь в слот с квадратиком изчезает, а если может
то ложится, и если ложить с слота с квадратиком SHIFT'ом в инвентарь, она тоже пропадает(вещь).
Код Container'а.
Итак. введу вас в курс дела, хоть проблема на 1.5.2 а я указал 1.7.10 версию мне нужен фикс на 1.7.10, на 1.5.2 я как-нибудь да переверну.
У меня есть фейк слоты(12) вот в таком гуи:
Вы видете слот с квадратиком и рядом с ним нагрудник, они нормальные, меня больше интересуют слоты ниже которых 12 штук
После их добавления в виде IInventory после того как я туда пихаю вещи с SHIFT вещь если не может лечь в слот с квадратиком изчезает, а если может
то ложится, и если ложить с слота с квадратиком SHIFT'ом в инвентарь, она тоже пропадает(вещь).
Код Container'а.
Java:
public ContainerUpgradeArmor(InventoryPlayer inventoryplayer, TileEntityBlockUpgradeArmor tileentity) {
super(inventoryplayer);
this.tileentity = tileentity;
Slot_R r = null;
r = (Slot_R)Manager.INSTANCE.Get(tileentity.RecipesIndex).get(0);
SlotInvConsumableIDmeta slot = new SlotInvConsumableIDmeta(r.access, tileentity, 0, 54, 29, r.getFloatIDandDamage());
this.addSlotToContainer(slot);
r = (Slot_R)Manager.INSTANCE.Get(tileentity.RecipesIndex).get(1);
final SlotInvConsumableID slot1 = new SlotInvConsumableID(r.access, tileentity, 1, 112, 29, r.getFloatIDandDamage());
this.addSlotToContainer(slot1);
IInventory ModuleInv = new IInventory() {
//Слоты
ItemStack[] stacks = new ItemStack[12];
ItemStack[] stacksdouble = new ItemStack[12];
public int getSizeInventory() {
return this.stacks.length;
}
//Добавлял предметы в слоты
//которые являются апгрейдами предмета из слота 1(вид брони)
public ItemStack getStackInSlot(int i) {
if (Utils.isClient() && slot1.getHasStack()) {
ItemStack item = slot1.getStack();
NBTTagCompound n = Utils.getOrCreateNbtData(item);
if (item.stackTagCompound != null) {
if((n.getInteger("amp")/500) > 0)
{
stacks[0] = new ItemStack(3295, (n.getInteger("amp")/500), 0);
}
if((n.getInteger("yc")/250) > 0)
{
stacks[1] = new ItemStack(3299, (n.getInteger("yc")/250), 0);
}
if((n.getByte("dss")) > 0)
{
stacks[2] = new ItemStack(getDSS(item), 1, 0);
}
if((n.getByte("exo")) > 0)
{
stacks[3] = new ItemStack(3293, 1, 0);
}
if((n.getByte("heb")) > 0)
{
stacks[4] = new ItemStack(3301, 1, 0);
}
if((n.getInteger("lpm")) > 0)
{
stacks[5] = new ItemStack(2906, 1, 0);
}
if((n.getInteger("lptm")) > 0)
{
stacks[6] = new ItemStack(2907, 1, 0);
}
//if((n.getInteger("cole")) > 0 || n.getInteger("cole") != (0|-1))
//{
// stacks[7] = new ItemStack(getCOLOR(item), 1, 0);
//}
if((n.getByte("inv")) > 0)
{
stacks[7] = new ItemStack(3257, 1, 0);
}
if((n.getInteger("encoder$1")) > 0)
{
stacks[8] = new ItemStack(3327, 1, 0);
}
if((n.getInteger("lavalitres$1")) > 0)
{
stacks[9] = new ItemStack(3325, n.getInteger("lavalitres$1"), 0);
}
if((n.getInteger("shi")/100) > 0)
{
stacks[10] = new ItemStack(3297, (n.getInteger("shi")/100), 0);
}
}
return this.stacks[i];
} else {
return null;
}
}
public int getCOLOR(ItemStack i)
{
NBTTagCompound n = Utils.getOrCreateNbtData(i);
switch(n.getInteger("colo"))
{
case 1:
return 3263;
case 2:
return 3265;
case 3:
return 3267;
case 4:
return 3269;
case 5:
return 3271;
case 6:
return 3273;
case 7:
return 3275;
case 8:
return 3277;
case 9:
return 3279;
case 10:
return 3281;
case 11:
return 3283;
case 12:
return 3285;
case 13:
return 3287;
case 14:
return 3289;
case 15:
return 3291;
default:
return 0;
}
}
public int getDSS(ItemStack i)
{
NBTTagCompound n = Utils.getOrCreateNbtData(i);
switch(n.getByte("dss"))
{
case 1:
return 3305;
case 2:
return 3307;
case 3:
return 3309;
case 4:
return 3311;
case 5:
return 3313;
case 6:
return 3315;
case 7:
return 3317;
case 8:
return 3319;
case 9:
return 3321;
case 10:
return 3323;
default:
return 0;
}
}
public ItemStack decrStackSize(int i, int j) {
return null;
}
public ItemStack getStackInSlotOnClosing(int i) {
return null;
}
public void setInventorySlotContents(int i, ItemStack itemstack) {
}
public String getInvName() {
return "inv.Moduledisabled";
}
public boolean isInvNameLocalized() {
return false;
}
public int getInventoryStackLimit() {
return 64;
}
public void onInventoryChanged() {
}
public boolean isUseableByPlayer(EntityPlayer entityplayer) {
return false;
}
public void openChest() {
}
public void closeChest() {
}
public boolean isStackValidForSlot(int slot, ItemStack itemstack) {
return false;
}
};
int sl = 0;
//Добавляется 12 слотов в которые нельзя ничего ложить и забирать
for(int i = 0; i < 2; ++i) {
for(int j = 0; j < 6; ++j) {
this.addSlotToContainer(new SlotDisabled(ModuleInv, sl++, 39 + j * 18, 47 + i * 18));
}
}
this.CalcFullInv(84);
}