Package crazypants.enderio.xp

Source Code of crazypants.enderio.xp.PacketDrainPlayerXP

package crazypants.enderio.xp;

import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import cpw.mods.fml.relauncher.Side;
import crazypants.enderio.network.MessageTileEntity;
import crazypants.enderio.network.PacketHandler;

public class PacketDrainPlayerXP extends MessageTileEntity<TileEntity> implements IMessageHandler<PacketDrainPlayerXP, IMessage> {

  private static boolean isRegistered = false;
 
  public static void register() {
    if(!isRegistered) {
      PacketHandler.INSTANCE.registerMessage(PacketDrainPlayerXP.class, PacketDrainPlayerXP.class, PacketHandler.nextID(), Side.SERVER);
      isRegistered = true;
    }
  }
 
 
  int targetLevel;
  boolean isContainerLevel;
 
  public PacketDrainPlayerXP() {
  }

  public PacketDrainPlayerXP(TileEntity tile, int targetLevel, boolean isContainerLevel) {
    super(tile);
    this.targetLevel = targetLevel;
    this.isContainerLevel = isContainerLevel;
  }

  @Override
  public void toBytes(ByteBuf buf) {
    super.toBytes(buf);
    buf.writeShort((short)targetLevel);
    buf.writeBoolean(isContainerLevel);
  }

  @Override
  public void fromBytes(ByteBuf buf) {
    super.fromBytes(buf);
    targetLevel = buf.readShort();
    isContainerLevel = buf.readBoolean();
  }

  @Override
  public IMessage onMessage(PacketDrainPlayerXP message, MessageContext ctx) {
    EntityPlayer player = ctx.getServerHandler().playerEntity;
    TileEntity tile = message.getTileEntity(player.worldObj);
    if (tile instanceof IHaveExperience) {     
      IHaveExperience xpTile = (IHaveExperience)tile;      
      if(player.capabilities.isCreativeMode && message.isContainerLevel) {       
          xpTile.getContainer().addExperience(XpUtil.getExperienceForLevel(message.targetLevel));       
      } else {
        if(message.isContainerLevel) {
          xpTile.getContainer().drainPlayerXpToReachContainerLevel(player, message.targetLevel);
        } else {
          xpTile.getContainer().drainPlayerXpToReachPlayerLevel(player, message.targetLevel);
        }
      }
    }
    return null;
  }

}
TOP

Related Classes of crazypants.enderio.xp.PacketDrainPlayerXP

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.