/*
* This file is part of Matter Overdrive
* Copyright (c) 2015., Simeon Radivoev, All rights reserved.
*
* Matter Overdrive is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Matter Overdrive is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>.
*/
package matteroverdrive.network.packet.server;/* Created by Simeon on 10/17/2015. */
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import io.netty.buffer.ByteBuf;
import matteroverdrive.network.packet.PacketAbstract;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.play.server.S23PacketBlockChange;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.WorldServer;
public class PacketDigBlock extends PacketAbstract
{
int typeOfDig;
int x,y,z,side;
public PacketDigBlock(){}
public PacketDigBlock(int x,int y,int z,int typeOfDig,int side)
{
this.x = x;
this.y = y;
this.z = z;
this.side = side;
this.typeOfDig = typeOfDig;
}
@Override
public void fromBytes(ByteBuf buf) {
x = buf.readInt();
y = buf.readInt();
z = buf.readInt();
side = buf.readByte();
typeOfDig = buf.readByte();
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(x);
buf.writeInt(y);
buf.writeInt(z);
buf.writeByte(side);
buf.writeByte(typeOfDig);
}
public static class ServerHandler extends AbstractServerPacketHandler<PacketDigBlock>
{
@Override
public IMessage handleServerMessage(EntityPlayer player, PacketDigBlock message, MessageContext ctx) {
WorldServer worldserver = MinecraftServer.getServer().worldServerForDimension(player.dimension);
EntityPlayerMP playerMP = (EntityPlayerMP)player;
if (message.typeOfDig == 0)
{
if (!MinecraftServer.getServer().isBlockProtected(worldserver, message.x, message.y, message.z, player))
{
playerMP.theItemInWorldManager.onBlockClicked(message.x, message.y,message.z, message.side);
}
else
{
playerMP.playerNetServerHandler.sendPacket(new S23PacketBlockChange(message.x, message.y, message.z, worldserver));
}
}
else if (message.typeOfDig == 2)
{
playerMP.theItemInWorldManager.uncheckedTryHarvestBlock(message.x, message.y, message.z);
if (worldserver.getBlock(message.x, message.y, message.z).getMaterial() != Material.air)
{
playerMP.playerNetServerHandler.sendPacket(new S23PacketBlockChange(message.x,message.y, message.z, worldserver));
}
}
else if (message.typeOfDig == 1)
{
playerMP.theItemInWorldManager.cancelDestroyingBlock(message.x, message.y, message.z);
if (worldserver.getBlock(message.x, message.y, message.z).getMaterial() != Material.air)
{
playerMP.playerNetServerHandler.sendPacket(new S23PacketBlockChange(message.x, message.y, message.z, worldserver));
}
}
return null;
}
}
}