@Override
  public IMessage onMessage(MessageTelePipeUpdate message, MessageContext ctx) {
    TileEntity te =
        ctx.getServerHandler().playerEntity.worldObj.getTileEntity(message.x, message.y, message.z);
    if (te instanceof TileGenericPipe) {
      PipeTeleport<?> pipe = (PipeTeleport<?>) ((TileGenericPipe) te).pipe;
      // only allow the owner to change pipe state
      EntityPlayerMP entityPlayer = (EntityPlayerMP) ctx.getServerHandler().playerEntity;
      if (!PipeTeleport.canPlayerModifyPipe(entityPlayer, pipe)) {
        entityPlayer.addChatComponentMessage(
            new ChatComponentText("Sorry, You may not change pipe state."));
        return null;
      }
      int frequency = message._freq;
      if (frequency < 0) {
        frequency = 0;
      }
      pipe.setFrequency(frequency);
      pipe.state = (byte) message._state;
      pipe.isPublic = message._isPublic;
    }

    return null;
  }
 private void handleTelePipeData(Player player, DataInputStream data) {
   try {
     TileEntity te = getTileEntity(player, data);
     if (te instanceof TileGenericPipe) {
       PipeTeleport pipe = (PipeTeleport) ((TileGenericPipe) te).pipe;
       // only allow the owner to change pipe state
       EntityPlayerMP entityPlayer = (EntityPlayerMP) player;
       if (!PipeTeleport.canPlayerModifyPipe(entityPlayer, pipe)) {
         entityPlayer.sendChatToPlayer(
             ChatMessageComponent.createFromText("You may not change pipe state."));
         return;
       }
       int frequency = data.readInt();
       if (frequency < 0) {
         frequency = 0;
       }
       pipe.setFrequency(frequency);
       pipe.state = (byte) data.read();
       pipe.isPublic = (data.read() == 1);
     }
   } catch (IOException e) {
     AdditionalPipes.instance.logger.log(Level.SEVERE, "Error handling teleport pipe packet.", e);
   }
 }