summaryrefslogtreecommitdiff
path: root/src/main/java/jp/plusplus/fbs/storage/InventoryTerminal.java
blob: e806ea5b933ffddf57f0f31ba4204a396539bb58 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package jp.plusplus.fbs.storage;

import jp.plusplus.fbs.FBS;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;

/**
 * Created by plusplus_F on 2016/03/08.
 */
public class InventoryTerminal implements IInventory {
    public ItemStack[] allItem;
    public ItemStack[] itemStacks=new ItemStack[54];
    public TileEntityMeal meal;
    public float scroll;

    public boolean dontUpdate;

    public InventoryTerminal(TileEntityMeal meal){
        this.meal=meal;
    }

    public void updateItemList(){
        if(!dontUpdate){
            allItem=meal.getAllItemStacks();
            if(allItem.length<=54){
                for(int i=0;i<itemStacks.length;i++) itemStacks[i]=null;
                for(int i=0;i<allItem.length;i++) itemStacks[i]=allItem[i];
            }
            else{
                //スクロールに合わせて変更
                int shift=(int)(((allItem.length-54)/9+1)*scroll);
                for(int i=0;i<54;i++){
                    int index=i+shift*9;
                    if(index<allItem.length) itemStacks[i]=allItem[index];
                    else itemStacks[i]=null;
                }
            }
        }
    }

    @Override
    public int getSizeInventory() {
        return 54;
    }

    @Override
    public ItemStack getStackInSlot(int p_70301_1_) {
        return itemStacks[p_70301_1_];
    }

    @Override
    public ItemStack decrStackSize(int index, int stackSize) {
        if (this.itemStacks[index] != null) {
            ItemStack itemstack;

            if (this.itemStacks[index].stackSize <= stackSize) {
                itemstack = this.itemStacks[index].copy();
                this.itemStacks[index] = null;
                this.markDirty();
                return itemstack;
            } else {
                itemstack = this.itemStacks[index].splitStack(stackSize);

                if (this.itemStacks[index].stackSize == 0) {
                    this.itemStacks[index] = null;
                }

                this.markDirty();
                return itemstack;
            }
        }
        return null;
    }

    @Override
    public ItemStack getStackInSlotOnClosing(int p_70304_1_) {
        return null;
    }

    @Override
    public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) {
        //meal.insertItemStack(p_70299_2_);
        itemStacks[p_70299_1_]=p_70299_2_;
        markDirty();
    }

    @Override
    public String getInventoryName() {
        return "fbs.terminal";
    }

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

    @Override
    public int getInventoryStackLimit() {
        return Integer.MAX_VALUE;
    }

    @Override
    public void markDirty() {
        updateItemList();
    }

    @Override
    public boolean isUseableByPlayer(EntityPlayer p_70300_1_) {
        return true;
    }

    @Override
    public void openInventory() {
        updateItemList();
    }

    @Override
    public void closeInventory() {
    }

    @Override
    public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
        return true;
    }
}