diff options
author | Detrav <witalyezep@gmail.com> | 2016-04-14 18:13:00 +0300 |
---|---|---|
committer | Detrav <witalyezep@gmail.com> | 2016-04-14 18:13:00 +0300 |
commit | 156aa13bd3aea644e3a6d21a30abc0e2b2fb365c (patch) | |
tree | db3de50f1ed23b95476f81636d83453c520e4a4a /src/main | |
parent | 4de797cbb1b251a8e98f850fabbaa046b021e27a (diff) | |
download | GT5-Unofficial-156aa13bd3aea644e3a6d21a30abc0e2b2fb365c.tar.gz GT5-Unofficial-156aa13bd3aea644e3a6d21a30abc0e2b2fb365c.tar.bz2 GT5-Unofficial-156aa13bd3aea644e3a6d21a30abc0e2b2fb365c.zip |
Add mode switch to hole
Diffstat (limited to 'src/main')
4 files changed, 94 insertions, 2 deletions
diff --git a/src/main/java/com/detrav/events/BlockBreakEventHandler.java b/src/main/java/com/detrav/events/BlockBreakEventHandler.java index eaca6c7d2f..f05259f2d1 100644 --- a/src/main/java/com/detrav/events/BlockBreakEventHandler.java +++ b/src/main/java/com/detrav/events/BlockBreakEventHandler.java @@ -9,6 +9,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S23PacketBlockChange; import net.minecraft.tileentity.TileEntity; @@ -37,6 +38,8 @@ public class BlockBreakEventHandler { return; if(player.capabilities.isCreativeMode) return; + NBTTagCompound entityData = player.getEntityData(); + if(entityData.getLong("detrav.minning.mode")==0) return; Vec3 vec3 = Vec3.createVectorHelper(player.posX, player.posY + 1.62f, player.posZ); Vec3 vec31 = ev.getPlayer().getLook(1.0F); Vec3 vec32 = vec3.addVector(vec31.xCoord * 4.5F, vec31.yCoord * 4.5F, vec31.zCoord * 4.5F); diff --git a/src/main/java/com/detrav/events/DetravKeyHandler.java b/src/main/java/com/detrav/events/DetravKeyHandler.java index abe13a7eab..367d0856d8 100644 --- a/src/main/java/com/detrav/events/DetravKeyHandler.java +++ b/src/main/java/com/detrav/events/DetravKeyHandler.java @@ -1,5 +1,7 @@ package com.detrav.events; +import com.detrav.net.DetravModeSwitchPacket02; +import com.detrav.net.DetravNetwork; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -20,7 +22,8 @@ public class DetravKeyHandler { public void onKeyInput(InputEvent.KeyInputEvent event) { if(modeSwitchKey.isPressed()) { - Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("modeSwitchKey")); + DetravNetwork.INSTANCE.sendToServer(new DetravModeSwitchPacket02(Minecraft.getMinecraft().thePlayer)); + //Minecraft.getMinecraft().thePlayer.getEntityData(). } } diff --git a/src/main/java/com/detrav/net/DetravModeSwitchPacket02.java b/src/main/java/com/detrav/net/DetravModeSwitchPacket02.java new file mode 100644 index 0000000000..30e9289b16 --- /dev/null +++ b/src/main/java/com/detrav/net/DetravModeSwitchPacket02.java @@ -0,0 +1,82 @@ +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; + + public DetravModeSwitchPacket02() + { + player = null; + } + + public DetravModeSwitchPacket02(EntityPlayer aPlayer) + { + player = aPlayer; + } + + @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); + return tOut.toByteArray(); + } + + @Override + public Object decode(ByteArrayDataInput aData) { + int id = aData.readInt(); + if (id == Integer.MIN_VALUE) + return new DetravModeSwitchPacket02(); + //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); + temp = null; + } + } + return new DetravModeSwitchPacket02(temp); + } + + @Override + public void process() { + if(player!=null) { + NBTTagCompound aData = player.getEntityData(); + //aData.hasNoTags() + long minningMode = aData.getLong("detrav.minning.mode"); + if(minningMode == 0) { + aData.setLong("detrav.minning.mode", 1); + player.addChatMessage(new ChatComponentText("Mining mode 3x3 block")); + } + else { + aData.setLong("detrav.minning.mode", 0); + player.addChatMessage(new ChatComponentText("Mining mode 1x1 block")); + } + } + } +} diff --git a/src/main/java/com/detrav/net/DetravNetwork.java b/src/main/java/com/detrav/net/DetravNetwork.java index 86780ab81c..6d8a8fd0f3 100644 --- a/src/main/java/com/detrav/net/DetravNetwork.java +++ b/src/main/java/com/detrav/net/DetravNetwork.java @@ -31,7 +31,7 @@ public class DetravNetwork extends MessageToMessageCodec<FMLProxyPacket, DetravP { INSTANCE = this; this.mChannel = NetworkRegistry.INSTANCE.newChannel("DetravScanner", new ChannelHandler[]{this, new HandlerShared()}); - this.mSubChannels = new DetravPacket[]{new DetravProPickPacket00(),new DetravPortableChargerPacket01()}; + this.mSubChannels = new DetravPacket[]{new DetravProPickPacket00(),new DetravPortableChargerPacket01(), new DetravModeSwitchPacket02()}; } @Override @@ -50,6 +50,10 @@ public class DetravNetwork extends MessageToMessageCodec<FMLProxyPacket, DetravP ((FMLEmbeddedChannel) this.mChannel.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(aPlayer); ((FMLEmbeddedChannel) this.mChannel.get(Side.SERVER)).writeAndFlush(aPacket); } + public void sendToServer(DetravPacket aPacket) { + ((FMLEmbeddedChannel) this.mChannel.get(Side.CLIENT)).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.TOSERVER); + ((FMLEmbeddedChannel) this.mChannel.get(Side.CLIENT)).writeAndFlush(aPacket); + } @ChannelHandler.Sharable static final class HandlerShared |