aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/detrav/net/DetravModeSwitchPacket02.java
blob: 0296f6bdab5557ea96135bba833a5df81132800a (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
package com.detrav.net;

import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.ChatComponentText;

import java.util.ArrayList;
import java.util.ListIterator;

/**
 * Created by wital_000 on 14.04.2016.
 */
public class DetravModeSwitchPacket02 extends DetravPacket {

    EntityPlayer player;
    boolean back;

    public DetravModeSwitchPacket02() {
        player = null;
    }

    public DetravModeSwitchPacket02(EntityPlayer aPlayer, boolean aBack) {
        player = aPlayer;
        back = aBack;
    }

    @Override
    public int getPacketID() {
        return 2;
    }

    @Override
    public byte[] encode() {
        ByteArrayDataOutput tOut = ByteStreams.newDataOutput(1);
        if (player != null)
            tOut.writeInt(player.getEntityId());
        else tOut.writeInt(Integer.MIN_VALUE);
        tOut.writeBoolean(back);
        return tOut.toByteArray();
    }

    @Override
    public Object decode(ByteArrayDataInput aData) {
        int id = aData.readInt();
        if (id == Integer.MIN_VALUE)
            return new DetravModeSwitchPacket02();
        boolean aBack = aData.readBoolean();
        //ArrayList<EntityPlayerMP> allp = new ArrayList<EntityPlayerMP>();
        ListIterator itl;
        EntityPlayerMP temp = null;
        for (int i = 0; i < MinecraftServer.getServer().worldServers.length; i++) {
            itl = MinecraftServer.getServer().worldServers[i].playerEntities.listIterator();
            while (itl.hasNext()) {
                temp = (EntityPlayerMP) itl.next();
                if (temp.getEntityId() == id)
                    return new DetravModeSwitchPacket02(temp, aBack);
                temp = null;
            }
        }
        return new DetravModeSwitchPacket02(temp, aBack);
    }

    @Override
    public void process() {
        if (player != null) {
            NBTTagCompound aData = player.getEntityData();
            //aData.hasNoTags()
            long minningMode = aData.getLong("detrav.minning.mode");
            if (back) {
                if (--minningMode < 0)
                    minningMode = 4;
            } else {
                if (++minningMode > 4)
                    minningMode = 0;
            }
            switch ((int) minningMode) {
                case 0:
                    player.addChatMessage(new ChatComponentText("Mining mode 1x1, just one block"));
                    break;
                case 1:
                    player.addChatMessage(new ChatComponentText("Mining mode 3x3 by side, nine blocks"));
                    break;
                case 2:
                    player.addChatMessage(new ChatComponentText("Mining mode 3x3 horizontal, nine blocks"));
                    break;
                case 3:
                    player.addChatMessage(new ChatComponentText("Mining mode 3x3 vertical, nine blocks"));
                    break;
                case 4:
                    player.addChatMessage(new ChatComponentText("Mining mode 3x3x3 vein, twenty seven blocks by type"));
                    break;
            }
            aData.setLong("detrav.minning.mode", minningMode);

            if (player instanceof EntityPlayerMP)
                DetravNetwork.INSTANCE.sendToPlayer(new DetravModePacket03(player), (EntityPlayerMP) player);
        }
    }
}