GUI

1,683
2
1.Как сделать,чтобы при определённой одежде показывало(не важно на каких коорд-ах)другие слоты(могут быть разного кол-ва и разных типов)
2.Почему,когда я создал инвентарь игрока,он не работает.Попросту ,если взять предмет,то он вернётся назад в слот.Слоты на местах
3.Третьего нет
 
Ну, я же с тайлом такое творил, ставить коорды слота на over
 
Код:
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;

public class ContainerInventory extends Container {
    //TODO
    public ContainerInventory(EntityPlayer player) {
        for (int i = 0; i < 3; i++) {
            addSlotToContainer(new Slot(player.inventory, i, 8 + i * 18, 84));
        }
        for (int i = 0; i < 4; ++i) {
            final int k = i;
            final EntityPlayer thePlayer = player;
            addSlotToContainer(new Slot(player.inventory, player.inventory.getSizeInventory() - 1 - i, 8, 8 + i * 18) {
                @Override
                public int getSlotStackLimit() {
                    return 1;
                }

                @Override
                public boolean isItemValid(ItemStack p_75214_1_) {
                    if (p_75214_1_ == null) {
                        return false;
                    }
                    return p_75214_1_.getItem().isValidArmor(p_75214_1_, k, thePlayer);
                }

                @SideOnly(Side.CLIENT)
                @Override
                public IIcon getBackgroundIconIndex() {
                    return ItemArmor.func_94602_b(k);
                }
            });
        }
    }

    @Override
    public boolean canInteractWith(EntityPlayer p_75145_1_) {
        return p_75145_1_.inventory.isUseableByPlayer(p_75145_1_);
    }

    @Override
    public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int p_82846_2_) {
        return null;
    }
}


Код:
import craftz.CraftZ;
import static craftz.Utils.drawPlayerModel;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;

public class GuiInventory extends GuiContainer {

    private final ContainerInventory container;

    public GuiInventory(ContainerInventory p_i1072_1_) {
        super(p_i1072_1_);
        this.container = (ContainerInventory) inventorySlots;
        xSize = 176;
        ySize = 108;
    }

    @Override
    protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
        ResourceLocation texture = new ResourceLocation(MODID, "textures/gui/inventory.png");
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        this.mc.renderEngine.bindTexture(texture);
        int x = (width - xSize) / 2;
        int y = (height - ySize) / 2;
        drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
        //0,0-head & body angle
        drawPlayerModel(x + 51, y + 75, 30, 0, 0, this.mc.thePlayer, p_146976_1_);
        /*for (int i = 0; i < 20; i++) {
            container.getSlot(100 + i).yDisplayPosition = -1000;
        }*/
    }

    @Override
    public boolean doesGuiPauseGame() {
        return false;
    }
}
 
Я же сказал, для 2, меняешь координаты слотов на нужные тебе, до этого они должны быть чёрть знает где.
 
Насчёт первого.Выходит,что я должен добавлять все слоты а всю одежду?Ибо у каждой свои слоты и ,если их просто сместить,то не выйдет разнообразия слотов(все одного типа(класса)-Slot.А надо,чтобы было,например, Slotx2,SlotVasya-8.В другой Slot x8,SlotVasya-1
 
В чем дело? Считываешь с нбт предмета, где каждая кнопка должна находиться. Или булевы сделай.
 
Не понял тебя,что ж я такой даун
Кратче задам вопрос. По нажатию кнопки можно слоты заменить? А именно их кол-во и тип
 
А в гуи, вроде как, кроме шифта ничего не работает?
Когда я делал с описанием предмета, то там, кроме шифта ничего не работало :\
Хотя есть мод, который вещи сортирует, и там работает... Ай лан...

Насчёт типа слота я не знаю, не знаю вообще, что это и зачем.

А в чём собственно проблемы? Может я тебя не понимаю? Если тебе просто надо добавлять/удалять визуально слоты, то регаешь их куеву тучу с over координатами, и потом ставишь их на нужные тебе места.

Менять коорды вот так: 
Код:
            inventorySlots.getSlot(0).yDisplayPosition = 37;
            inventorySlots.getSlot(0).xDisplayPosition = 37;
Это надо писать в [GUI] extends GuiContainer
 
Это я знаю,но игрок может открыть инвентарь и положить броню,тогда слоты из брони(там есть метод)должны положиться
[merge_posts_bbcode]Добавлено: 30.05.2015 16:52:22[/merge_posts_bbcode]

Короче,при открытом инвентаре должны добавляться слоты из одежды(там есть метод)
 
Назад
Сверху