aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/detrav/gui/containers/DetravPortableChargerContainer.java
blob: 3d5685ada8e747bac3b7371013441c1b53ebc5a6 (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
127
128
129
130
package com.detrav.gui.containers;

import com.detrav.items.DetravMetaGeneratedTool01;
import com.detrav.net.DetravNetwork;
import com.detrav.net.DetravPortableChargerPacket01;
import gregtech.api.items.GT_MetaBase_Item;
import gregtech.api.util.GT_ModHandler;
import gregtech.common.items.armor.SlotLocked;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

/**
 * Created by wital_000 on 07.04.2016.
 */
public class DetravPortableChargerContainer extends Container {
    public IInventory slots = new InventoryCrafting(this, 1, 1);
    public ItemStack mItem;
    private World worldObj;

    public DetravPortableChargerContainer(InventoryPlayer inventoryPlayer, World aWorld,ItemStack aStack) {
        this.worldObj = aWorld;
        this.addSlotToContainer(new Slot(slots, 0, 80, 35));
        mItem = aStack;
        //new Slot()
        bindPlayerInventory(inventoryPlayer);

        //DetravMetaGeneratedTool01.INSTANCE.getToolStats(mItem).
    }

    protected void bindPlayerInventory(InventoryPlayer inventoryPlayer) {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 9; j++) {
                addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9,
                        8 + j * 18, 84 + i * 18));
            }
        }


        for (int i = 0; i < 9; i++) {
            ItemStack stackInSlot = inventoryPlayer.getStackInSlot(i);
            if (mItem!=null && stackInSlot!=null && mItem == stackInSlot) {
                addSlotToContainer(new SlotLocked(inventoryPlayer, i, 8 + i * 18, 142));
            } else {
                addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 142));
            }
        }
    }

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

    public void onContainerClosed(EntityPlayer p_75134_1_) {
        super.onContainerClosed(p_75134_1_);
        if (!this.worldObj.isRemote) {
            //for (int i = 0; i < 9; ++i)
            //{
            ItemStack itemstack = this.slots.getStackInSlotOnClosing(0);

            if (itemstack != null) {
                p_75134_1_.dropPlayerItemWithRandomChoice(itemstack, false);
            }
            //}
        }
    }

    @Override
    public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) {
        return null;
    }


    public void onUpdate(GT_MetaBase_Item aItem, ItemStack aStack, World aWorld, Entity aPlayer, int aTimer) {
        if(mItem==null) return;

        ItemStack item = this.slots.getStackInSlot(0);
        if(item == null) return;

        if(GT_ModHandler.isElectricItem(item));

        //GT_ModHandler.ch

        for(int forTry = 0; forTry<20;forTry++){
            Long[] selfStats = DetravMetaGeneratedTool01.INSTANCE.getElectricStats(mItem);
            if (selfStats == null) return;

            long selfCharge = DetravMetaGeneratedTool01.INSTANCE.getRealCharge(mItem);
            if (selfCharge <= 0) return;

            long loss = DetravMetaGeneratedTool01.INSTANCE.getElectricStatsLoss(mItem);
            if (loss < 0) return;

            long energyToTransfer = (selfStats[1] - loss) * aTimer;

            int removeEnergy = GT_ModHandler.chargeElectricItem(item, (int) energyToTransfer, Integer.MAX_VALUE, false, false);
            if (removeEnergy == 0) return;
            GT_ModHandler.dischargeElectricItem(mItem, (int) (removeEnergy + loss * aTimer), Integer.MAX_VALUE, false, false, true);

            if (aWorld.isRemote) return;
            if (aPlayer instanceof EntityPlayerMP) {
                DetravPortableChargerPacket01 packet = new DetravPortableChargerPacket01();
                packet.charge = selfCharge - removeEnergy + loss * aTimer;
                DetravNetwork.INSTANCE.sendToPlayer(packet, (EntityPlayerMP) aPlayer);

                //crafters
            }
        };
        //long max = DetravMetaGeneratedTool01.getToolMaxDamage(mItem);
        //double p = ((double)selfCharge)/((double)selfStats[0]);
        //DetravMetaGeneratedTool01.setToolDamage(mItem,(long) (max * p) + 200);
        //long
    }

    /*@Override
    public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) {
        ItemStack result = super.transferStackInSlot(par1EntityPlayer,par2);
        par1EntityPlayer.addChatMessage(new ChatComponentText(result.getDisplayName()));

        return result;
    }*/
}